Compartir a través de


Cómo: Establecer y obtener parámetros para objetos de comandos

Si se utilizan objetos de comando para ejecutar comandos contra una base de datos, las instrucciones SQL o procedimientos almacenados que se ejecuten normalmente requerirán parámetros. Por ejemplo, una instrucción Update sencilla que requiera parámetros podría ser como la siguiente:

UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)

Cuando se ejecuta esta instrucción, debe proporcionar valores para todos los parámetros (@LastName, @FirstName, @BirthDatey @EmployeeID). Para ello, se deben utilizar los objetos de parámetros. Los objetos de comando admiten una colección de parámetros (por ejemplo, Parameters) que contiene un conjunto de objetos de tipo SqlParameter, OleDbParameter, OdbcParameter o OracleParameter. En la colección existe un objeto de parámetro por cada parámetro que necesita pasar. Además, si está llamando a un procedimiento almacenado, podría necesitar un parámetro adicional para aceptar el valor devuelto del procedimiento.

Nota

Si se utiliza un conjunto de datos, normalmente no necesita ejecutar comandos en forma directa.En lugar de ello, pasa los parámetros a las consultas de TableAdapter, para más información, vea Cómo: Llenar un conjunto de datos con datos.

Establecer valores de parámetro

Antes de ejecutar un comando, debe establecer un valor para cada parámetro del comando.

Para establecer un valor de parámetro

  • Para cada parámetro en la colección de parámetros del comando, establezca su propiedad Value.

    El siguiente ejemplo muestra cómo establecer parámetros antes de ejecutar un comando que hace referencia a un procedimiento almacenado. El ejemplo supone que ya ha configurado la colección de parámetros con tres parámetros denominados au_id, au_lname y au_fname. Los parámetros individuales se establecen por nombre para explicar mejor el parámetro que se va a establecer.

    With oleDbCommand1
        .CommandText = "UpdateAuthor"
        .CommandType = System.Data.CommandType.StoredProcedure
        .Parameters("au_id").Value = "172-32-1176"
        .Parameters("au_lname").Value = "White"
        .Parameters("au_fname").Value = "Johnson"
    End With
    
    OleDbConnection1.Open()
    oleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()
    
    oleDbCommand1.CommandText = "UpdateAuthor";
    oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure;
    
    oleDbCommand1.Parameters["au_id"].Value = "172-32-1176";
    oleDbCommand1.Parameters["au_lname"].Value = "White";
    oleDbCommand1.Parameters["au_fname"].Value = "Johnson";
    
    oleDbConnection1.Open();
    oleDbCommand1.ExecuteNonQuery();
    oleDbConnection1.Close();
    

Obtener valores devueltos

Con frecuencia, los procedimientos almacenados devuelven valores a la aplicación que los llamó.

Para obtener los valores devueltos por procedimientos

  1. Cree parámetros cuya propiedad Direction esté establecida en Output o InputOutput (si el parámetro se utiliza en ambos procedimientos de recibir y enviar valores). Asegúrese de que el tipo de datos del parámetro coincide con el valor devuelto esperado.

  2. Después de ejecutar el procedimiento, lea la propiedad Value del parámetro que se ha devuelto.

Para obtener el valor devuelto de un procedimiento

  1. Cree parámetros cuya propiedad Direction esté establecida en ReturnValue.

    Nota

    El objeto de parámetro para el valor devuelto debe ser el primer elemento de la colección de parámetros.

  2. Asegúrese de que el tipo de datos del parámetro coincide con el valor devuelto esperado.

    Nota

    Las instrucciones SQL Update, Insert y Delete devuelven un valor entero que indica la cantidad de registros afectados por la instrucción.Puede obtener este valor como el valor devuelto del método ExecuteNonQuery.Para obtener más información, vea Modificar datos con procedimientos almacenados.

El siguiente ejemplo muestra cómo obtener el valor devuelto de un procedimiento almacenado denominado CountAuthors. En este caso, se supone que el primer parámetro de la colección de parámetros del comando se denomina "retvalue" y se ha configurado con una dirección de ReturnValue.

Dim returnValue As Integer

oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure

oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()

returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;

oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());

Vea también

Tareas

Cómo: Crear y ejecutar una instrucción SQL que devuelva filas

Cómo: Crear y ejecutar una instrucción SQL que devuelve un único valor

Cómo: Crear y ejecutar una instrucción SQL que no devuelva ningún valor

Cómo: Ejecutar un procedimiento almacenado que devuelve filas

Cómo: Ejecutar un procedimiento almacenado que devuelve un único valor

Cómo: Ejecutar un procedimiento almacenado que no devuelve valores

Conceptos

Buscar datos en la aplicación

Parámetros DataAdapter

Modificar datos con procedimientos almacenados