명명된 명령에 매개 변수 전달
명령의 결과가 명명된 명령의 변수로 전달되는 것처럼, 매개변수화된 명령의 매개변수는 명명된 명령에 대한 변수로서 전달될 수 있습니다.
다음 코드 예제에서는 CustomerID Northwind 데이터베이스에서 "ALKFI"인 고객이 주문한 모든 주문을 검색하려고 시도합니다. CustomerID 값은 명명된 명령이 호출될 때 제공됩니다.
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
모든 입력 매개 변수는 출력 변수 앞에 와야 하며 매개 변수의 데이터 형식은 해당 필드의 데이터 형식과 일치하거나 변환될 수 있어야 합니다. 다음 문장:
objConn.GetOrdersOf 12345, objRs
- 필요한 입력 매개 변수가 정수 형식이 아닌 String 형식이므로 데이터 형식이 일치하지 않는 오류가 발생합니다.
다음 호출
objConn.GetOrdersOf "12345", objRs
-는 유효하지만 데이터베이스에 이러한 레코드가 없으므로 빈 결과 집합을 생성합니다.