我编写了一个 VBScript 函数来调用存储过程。过去,我编写了许多使用输入参数调用存储过程的函数,但在本例中,我需要使用输出参数。
在另一个应用程序中,我使用 Entity Framework 调用完全相同的存储过程,因此存储过程很好。
这是我的代码:
Function checkAccess(userid,link) isAllowed = false set cmd = Server.CreateObject("ADODB.Command") cmd.CommandText = "Check_Permission" cmd.ActiveConnection = Conn cmd.NamedParameters = true cmd.CommandType = adCmdStoredProc cmd.Parameters.Append(cmd.CreateParameter("@Login", adVarChar, adParamInput, 50, userId)) cmd.Parameters.Append(cmd.CreateParameter("@LinkId", adInteger, adParamInput, 50, link)) cmd.Parameters.Append(cmd.CreateParameter("@IsAllowed", adBoolean, adParamOutput, 10, isAllowed)) checkAccess = isAllowed End Function
此函数始终返回 false。我如何使它工作?
最佳答案
您应该返回输出参数的值:
checkAccess = cmd.Parameters("@IsAllowed").Value
此外,ADO 中的输出参数不需要初始值,adBoolean 参数不需要大小,因此您可以将最后一个参数更改为:
cmd.Parameters.Append(cmd.CreateParameter("@IsAllowed", adBoolean, adParamOutput))
您也可以摆脱 isAllowed 变量,因为它不再是必需的。
关于sql - 在VBScript中使用输出参数调用SQL存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017872/