Compartir a través de


Pasar parámetros a un comando con nombre

Al igual que el resultado del comando se pasa como una variable del comando con nombre, los parámetros de un comando parametrizado se pueden pasar como en variables al comando con nombre.

El ejemplo de código siguiente intenta recuperar todos los pedidos realizados por el cliente cuya CustomerID es "ALKFI" de la base de datos Northwind. El valor de CustomerID se proporciona en el momento en que se llama al comando denominado.

Const DS = "MySqlServer"  
Const DB = "Northwind"  
Const DP = "SQLOLEDB"  
  
Dim objConn As New ADODB.Connection  
Dim objRs As New ADODB.Recordset  
Dim objComm As New ADODB.Command  
  
CommandText = "SELECT OrderID, OrderDate, " & _  
                     "RequiredDate, ShippedDate " & _  
                     "FROM Orders " & _  
                     "WHERE CustomerID = ? " & _  
                     "ORDER BY OrderID"  
  
ConnectionString = "Provider=" & DP & _  
                   ";Data Source=" & DS & _  
                   ";Initial Catalog=" & DB & _  
                   ";Integrated Security=SSPI;"  
  
' Connect to the data source.  
objConn.Open ConnectionString  
  
' Set a named command.  
objComm.CommandText = CommandText  
objComm.CommandType = adCmdText  
objComm.Name = "GetOrdersOf"  
Set objComm.ActiveConnection = objConn  
  
' Call the named command, passing a CustomerID value  
' as the input parameter.   
'    "ALFKI" is the required input parameter,  
'    objRs is the resultant output variable.  
objConn.GetOrdersOf "ALKFI", objRs  
  
' Display the result.  
Debug.Print "All orders by ALFKI:"  
Do While Not objRs.EOF  
    Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _  
                objRs(2) & vbTab & objRs(3)  
    objRs.MoveNext  
Loop  
  
' Clean up.  
objRs.Close  
objConn.Close  
Set objRs = Nothing  
Set objConn = Nothing  
Set objComm = Nothing  

Tenga en cuenta que todos los parámetros de entrada deben preceder a cualquier variable de salida y los tipos de datos de parámetros deben coincidir o se pueden convertir en los de los campos correspondientes. La declaración siguiente:

objConn.GetOrdersOf 12345, objRs  

-producirá un error de tipos de datos no coincidentes, ya que el parámetro de entrada necesario es de un tipo de String, no de un tipo de Integer.

La siguiente llamada:

objConn.GetOrdersOf "12345", objRs  

-es válido, pero producirá un conjunto de resultados vacío porque no existe este tipo de registros en la base de datos.

Consulte también

Objeto de conexión (ADO)