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
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.
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
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.
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