【发布时间】:2023-04-01 21:55:01
【问题描述】:
我想将参数传递到 SQL Server 2008 中的存储过程中,并将结果存储在 ADODB.Recordset
目前我有这个:
Public Sub UpdateWithStoredProcedure()
Dim cmd As New ADODB.Command
Dim conn As ADODB.Connection
Dim prm As ADODB.Parameter
Dim strConn As String
Dim strSQL As String
strConn = "Provider=SQLOLEDB.1;" & _
"Data Source=(local); Initial Catalog=NorthWind;" & _
"Integrated Security=SSPI"
Set conn = New ADODB.Connection
conn.Open strConn
Set cmd = New ADODB.Command
cmd.CommandText = "procOrderUpdate"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = conn
Set prm = cmd.CreateParameter("OrderID", adInteger, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters("OrderID").Value = 1
Set prm = cmd.CreateParameter("OrderDate", adDate, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters("OrderDate").Value = "1/1/2007"
Set prm = cmd.CreateParameter("ShipVia", adInteger, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters("ShipVia").Value = 2
Set prm = cmd.CreateParameter("Freight", adCurrency, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters("Freight").Value = "10.5"
'Execute the Stored Procedure
cmd.Execute
'Close the connection
conn.Close
End Sub
问题是我如何将它存储在记录集中而不是仅仅执行它?
【问题讨论】:
-
您的存储过程是否编写为返回记录集?
-
@tim 很抱歉,您能解释一下返回记录集的存储过程与替代方法之间的区别吗?
-
并非所有存储过程都旨在返回记录集。一些存储过程只是通过“out”参数传回信息。你尝试过 Pynner 的建议吗?
标签: sql sql-server-2008 excel vba