【问题标题】:run stored procedure and return values from VBA运行存储过程并从 VBA 返回值
【发布时间】: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


【解决方案1】:

我相信你只需要这个

Dim Rst As ADODB.Recordset

还有这个

Set Rst = cmd.Execute

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2017-05-02
    相关资源
    最近更新 更多