繁体   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