Mensajes [1] - Enviado el Jueves 14 de Agosto de 2008 a las 13:43hs
Al invocar el mismo muestra el error siguiente:
?Incorrect number of arguments for PROCEDURE spSetClientes; expected 3, got 1
El cuerpo del strore procedure es el siguiente:
?
CREATE PROCEDURE spSetClientes (IN pcodigo bigint(19 ),
IN pnombre varchar(50),
IN ptelefono varchar(12 ))
BEGIN
IF NOT EXISTS (SELECT codigo FROM tblClientes where codigo = pcodigo) THEN
Insert into tblClientes (nombres, telefono) values (pnombre, ptelefono);
ELSE
update tblClientes
Set nombres = pnombre,
telefono = ptelefono
WHERE codigo = pcodigo;
END IF;
END;
y el comando en vb.net es el siguiente:
Dim cmdUpdate As New MySqlCommand
Using cnMysql As New MySqlConnection(My.Settings.cnstring)
cnMysql.Open()
With cmdUpdate
.Connection = cnMysql
.CommandText = sqlUpdate
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("pcodigo", txtcodigo.Text)
.Parameters("pcodigo").Direction = ParameterDirection.Input
.Parameters.AddWithValue("pnombre", txtnombres.Text)
.Parameters("pnombre").Direction = ParameterDirection.Input
.Parameters.AddWithValue("ptelefono", txttelefono.Text)
.Parameters("ptelefono").Direction = ParameterDirection.Input
.CommandTimeout = 2000000
End With
cmdUpdate.ExecuteNonQuery()
end using
Que estoy haciendo mal o es un error de mySQl?.??
Nota: he pasado los parametros con @ y ? delante.?? Ej: @pcodigo y ?pcodigo.
Mensajes [1] - Enviado el Miércoles 29 de Abril de 2009 a las 18:08hs
Te envio fragmento de codigo---------------------
cmd.CommandText = "sp_insert_requisicion"
cmd.CommandType = CommandType.StoredProcedure
param.Value = "folio"
cmd.Parameters.AddWithValue("?vfolio", param.Value)
cmd.Parameters("?vfolio").Direction = ParameterDirection.Input
param.Value = fechaDb
cmd.Parameters.AddWithValue("?vcreado", param.Value)
cmd.Parameters("?vcreado").Direction = ParameterDirection.Input
param.Value = fechaDb
cmd.Parameters.AddWithValue("?vmodificado", param.Value)
cmd.Parameters("?vmodificado").Direction = ParameterDirection.Input
param.Value = 1
cmd.Parameters.AddWithValue("?vcat_estado_admvo_id", param.Value)
cmd.Parameters("?vcat_estado_admvo_id").Direction = ParameterDirection.Input
param.Value = 1
cmd.Parameters.AddWithValue("?vcreado_usuario_id", param.Value)
cmd.Parameters("?vcreado_usuario_id").Direction = ParameterDirection.Input
param.Value = 1
cmd.Parameters.AddWithValue("?vautorizado_usuario_id", param.Value)
cmd.Parameters("?vautorizado_usuario_id").Direction = ParameterDirection.Input
param.Value = fechaDb
cmd.Parameters.AddWithValue("?fecha", param.Value)
cmd.Parameters("?fecha").Direction = ParameterDirection.Input
cmd.Parameters.AddWithValue("?lastid", MySqlDbType.Int32)
cmd.Parameters("?lastid").Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()
lastid = cmd.Parameters("?lastid").Value
---------------lo anterior es para ejecutar un store procxedure que devuelve un parametro de salida (last insert id), espero te sea de utilidad
atte. Mchanc