2011-11-23 16 views
7

Chciałbym przekazać parametry do procedury przechowywanej w SQL Server 2008 i chciałbym do przechowywania wyników w ADODB.Recordsetrun procedura przechowywana i zwracania wartości z VBA

Obecnie mam to:

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 

Pytanie brzmi, jak zapisać to w zestawie rekordów, zamiast po prostu go wykonać?

+0

Czy procedura składowana zapisywane zwraca zestaw rekord? –

+0

@tim im sorry czy możesz wyjaśnić różnicę między procedurą składowaną zwracającą zestaw rekordów i alternatywą? –

+0

Nie wszystkie procedury przechowywane mają na celu zwrócenie zestawu rekordów. Niektóre zapisane procedury po prostu przekazują informacje za pomocą parametrów "out". Czy wypróbowałeś sugestię Pynnera? –

Odpowiedz

8

wierzę wszystko, co potrzebne jest to

Dim Rst As ADODB.Recordset 

i to

Set Rst = cmd.Execute 
Powiązane problemy