2013-01-04 43 views
1

我無法獲得經典asp代碼中的以下存儲過程來工作。它應該返回數據行。我很感謝你的幫助。感謝sql server存儲過程返回所選數據

代碼:

Set cmdSessionProc = Server.CreateObject("ADODB.Command") 
cmdSessionProc.ActiveConnection = conn 
cmdSessionProc.CommandText = "GetDetails" 
cmdSessionProc.CommandType = adCmdStoredProc 
    cmd.Parameters.Append cmd.CreateParameter("RetVal", adInteger, adParamReturnValue) 
cmdSessionProc.Parameters.Append 
    cmdSessionProc.CreateParameter "SessionID", adInteger, adParamReturnValue 
cmdSessionProc("SessionID")= required data value (int) 
cmdSessionProc.execute 


ALTER Procedure [xxxxxxx].[GetDetails] 
(@ID int) 
AS 
    SELECT * 
    FROM [xxxtablexxx] 
    WHERE [ID] = @ID 

回答

1

在經典的VB,Execute返回ADODB.Recordset。你可以看到這樣的東西:

Set rstRecordSet = cmdSessionProc.execute 
For i = 1 To rstRecordSet.RecordCount 
    MsgBox rstRecordSet.Fields(0).Name & "=" & rstRecordSet.Fields(0) 
    rstRecordSet.MoveNext 
Next 
rstRecordSet.Close 

還有good examples on MSDN

+0

感謝您的幫助。我最終把下面的代碼放在一起看起來很好。 '*獲取會話信息 DIM cmdSessionProc' Command對象 DIM rstSessionProc 設置cmdSessionProc =的Server.CreateObject( 「ADODB.Command」) 與cmdSessionProc .ActiveConnection =康恩 .CommandText = 「GetSessionData」 .CommandType = adCmdStoredProc .Parameters.Append .createParameter( 「@ ID」,adInteger,adParamInput ,, strSessionID) 端與 SET rstSessionProc = cmdSessionProc.Execute strSessionID = cmdSessionProc.Parameters( 「@ ID」) 的Response.Redirect(「XXX。 asp?id =「&strSessionID) – user1415095

0

除了Andomar的實際閱讀結果集的回答之外,我注意到您也有其他一些問題。

  • 您用xxxxxxx遮蔽了存儲過程的模式。如果架構不是連接字符串(通常爲dbo)中指定的用戶的缺省值,則還應該在CommandText中指定架構,即cmdSessionProc.CommandText = "xxxxxxx.GetDetails"。其實,你應該總是指定模式,不要因爲性能原因而默認。
  • 您的存儲過程有1個參數@ID,但您的示例代碼指定了2個參數,「RetValue」作爲返回值(即可)並且SessionID 也作爲返回值。第二個必須是adParamInput,並且名稱必須與存儲的proc的參數名稱相匹配(因爲您不必以與proc中相同的順序創建參數)。事實上,我相信你也需要在字符串中加上@符號。 cmdSessionProc.Parameters.Append cmdSessionProc.CreateParameter "@ID", adInteger, adParamInput
+0

嗨,謝謝你的幫助。 DIM cmdSessionProc'命令對象 DIM rstSessionProc 集cmdSessionProc =的Server.CreateObject( 「ADODB.Command」) 與cmdSessionProc .ActiveConnection =康恩 .CommandText = 「GetSessionData」 .CommandType = adCmdStoredProc .Parameters.Append。 createParameter( 「@ ID」,adInteger,adParamInput ,, strSessionID) 端與 SET rstSessionProc = cmdSessionProc.Execute strSessionID = cmdSessionProc.Parameters( 「@ ID」) 的Response.Redirect( 「xxx.asp?ID =」 & strSessionID) – user1415095

0

我使所有頁面的功能,甚至標準查詢或SP我使用此方法。 試試這個,希望它適合你。

dsn = "" 'your SQL connection param 
Set conn = Server.CreateObject("ADODB.Connection") 
Set rs = Server.CreateObject("ADODB.Recordset") 
conn.mode = 3 
conn.Open dsn 
sql = "exec GetDetails 'yourparam1','yourparam2'" 
rs.open sql, conn 
'codes to manage the results here 
'......