在VBScript中使用输出参数调用SQL存储过程

Dan*_*don 7 sql vbscript adodb asp-classic

我编写了一个VBScript函数来调用存储过程.在过去,我编写了许多用输入参数调用存储过程的函数,但在这种情况下,我需要使用Output参数.

在另一个应用程序中,我使用实体框架调用完全相同的存储过程,因此存储过程很好.

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

此函数始终返回false.我如何使其工作?

Bra*_*ing 15

您应该返回输出参数的值:

checkAccess = cmd.Parameters("@IsAllowed").Value
Run Code Online (Sandbox Code Playgroud)

此外,ADO中的输出参数不需要初始值,并且adBoolean参数不需要大小,因此您可以将最后一个参数更改为:

cmd.Parameters.Append(cmd.CreateParameter("@IsAllowed", adBoolean, adParamOutput))
Run Code Online (Sandbox Code Playgroud)

你也可以摆脱你的isAllowed变量,因为它已经不再需要了.