【发布时间】:2019-11-22 12:47:09
【问题描述】:
我正在尝试使用输入参数、返回的记录集和返回参数执行存储过程。当我转到 asp 页面时,我收到 500 错误。存储过程本身在 SQL Server 中按预期运行。你能说出下面代码中的错误在哪里吗?
' The following line must be changed to reflect your data source info
Conn.Open "Data Source=path; Initial Catalog=database;","username","password"
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = Conn
' Specify the name of the stored procedure you wish to call
cmd.CommandText = "ap_RF_085"
cmd.CommandType = adCmdStoredProc
' Use the values from the table in the following lines to define parameters
cmd.Parameters.Append cmd.CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue)
cmd.Parameters.Append cmd.CreateParameter("@Whse_Loc", adVarChar, adParamInput, 6)
cmd.Parameters.Append cmd.CreateParameter("@Whse_Zone", adVarChar, adParamInput, 6)
cmd.Parameters.Append cmd.CreateParameter("@Width_Char", adVarChar, adParamInput, 5)
cmd.Parameters.Append cmd.CreateParameter("@Height_Char", adVarChar, adParamInput, 5)
cmd.Parameters.Append cmd.CreateParameter("@Depth_Char", adVarChar, adParamInput, 5)
cmd.Parameters.Append cmd.CreateParameter("@Type", adVarChar, adParamInput, 1)
cmd.Parameters.Append cmd.CreateParameter("@Site", adVarChar, adParamInput, 8)
cmd.Parameters("@Whse_Loc") = "4H"
cmd.Parameters("@Whse_Zone") = ""
cmd.Parameters("@Width_Char") = ""
cmd.Parameters("@Height_Char") = ""
cmd.Parameters("@Depth_Char") = ""
cmd.Parameters("@Type") = ""
cmd.Parameters("@Site") = ""
cmd.Parameters("@Whse_Loc") = ""
cmd.Parameters("@Whse_Loc") = "MZ"
SET rs = cmd.Execute
returned = cmd.parameters("@RETURN_VALUE").value
RESPONSE.WRITE(returned)
感谢您的帮助!
我将代码更新为以下建议。我仍然收到 500 错误。 IE11 中的选项卡也显示“正在等待 [serverName]”。你能从代码中说出为什么没有正确传递吗?
cmd.Parameters.Append cmd.CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue)
cmd.Parameters.Append cmd.CreateParameter("@Whse_Loc", adVarChar, adParamInput, 6)
cmd.Parameters.Append cmd.CreateParameter("@Whse_Zone", adVarChar, adParamInput, 6)
cmd.Parameters.Append cmd.CreateParameter("@Width_Char", adVarChar, adParamInput, 5)
cmd.Parameters.Append cmd.CreateParameter("@Height_Char", adVarChar, adParamInput, 5)
cmd.Parameters.Append cmd.CreateParameter("@Depth_Char", adVarChar, adParamInput, 5)
cmd.Parameters.Append cmd.CreateParameter("@Type", adVarChar, adParamInput, 1)
cmd.Parameters.Append cmd.CreateParameter("@Site", adVarChar, adParamInput, 8)
cmd.Parameters("@Whse_Loc") = "4H"
cmd.Parameters("@Whse_Zone") = ""
cmd.Parameters("@Width_Char") = ""
cmd.Parameters("@Height_Char") = ""
cmd.Parameters("@Depth_Char") = ""
cmd.Parameters("@Type") = ""
cmd.Parameters("@Site") = ""
cmd.Parameters("@Whse_Loc") = ""
cmd.Parameters("@Whse_Loc") = "MZ"
SET rs = cmd.Execute
IF NOT rs.EOF THEN data = rs.GETROWS()
CALL rs.CLOSE()
returned = cmd.parameters("@RETURN_VALUE").value
【问题讨论】:
-
在关闭记录集之前不能访问返回参数。最简单的方法是使用
GetRows()将记录集存储到二维数组中,然后关闭记录集。 -
感谢您的回复。其他页面有很好的信息。我还遇到的是,当我运行页面时,我在 ie11 的选项卡中得到“等待 [serverName]”。你能在代码中看到任何可能导致问题的地方吗?
-
不客气,希望对您有所帮助。
标签: sql-server stored-procedures vbscript asp-classic