Foros > VB.NET ( Limpio y listo para usar ): Invocar Store Procedure con mas de un parametro desde vb.net

  1. apayero

    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.

  2. mchanc

    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


responder

Para poder responder a este tema tenes que ingresar. Si no tenes una cuenta podes registrarse gratis..

publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API