簡體   English   中英

sql server存儲過程返回選擇的數據

[英]sql server stored procedure to return selected data

我無法在經典的ASP代碼中使用以下存儲過程來工作。 它應該返回數據行。 多謝您的協助。 謝謝

碼:

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

在經典的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

在MSDN上很好的例子

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

  • 您使用xxxxxxx遮蓋了存儲的proc的架構。 如果該模式不是您在連接字符串中指定的用戶默認值(通常是dbo)以外的其他模式,則還應該在CommandText中指定模式,即cmdSessionProc.CommandText = "xxxxxxx.GetDetails" 實際上,您始終應該始終指定架構,並且出於性能考慮,不要讓其默認。
  • 您的存儲過程有1個參數@ID,但是示例代碼指定了2個參數,“ RetValue”作為返回值(可以),而SessionID 也作為返回值 第二個必須是adParamInput ,並且名稱必須與存儲的proc的參數名稱匹配(因為您不必按照與proc中相同的順序創建參數)。 實際上,我相信您也需要在字符串中使用@符號。 cmdSessionProc.Parameters.Append cmdSessionProc.CreateParameter "@ID", adInteger, adParamInput

我為所有頁面提供功能,甚至是標准查詢或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
'......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM