Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 运行存储过程并从VBA返回值_Sql_Sql Server 2008_Excel_Vba - Fatal编程技术网

Sql 运行存储过程并从VBA返回值

Sql 运行存储过程并从VBA返回值,sql,sql-server-2008,excel,vba,Sql,Sql Server 2008,Excel,Vba,我希望将参数传递到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

我希望将参数传递到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

问题是如何将其存储在记录集中,而不仅仅是执行它?

我相信您所需要的就是这个

Dim Rst As ADODB.Recordset
还有这个

Set Rst = cmd.Execute

您的存储过程是为了返回记录集而编写的吗?@tim很抱歉,您能解释一下返回记录集的存储过程与其他存储过程之间的区别吗?并非所有存储过程都是为了返回记录集而设计的。有些存储过程只是通过“out”参数传回信息。你试过皮纳的建议了吗?