7

ストアドプロシージャを呼び出すための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を返します。どうすればそれを機能させることができますか?

4

1 に答える 1

15

出力パラメータの値を返す必要があります。

checkAccess = cmd.Parameters("@IsAllowed").Value

また、ADOの出力パラメーターは初期値を必要とせず、adBooleanパラメーターはサイズを必要としないため、最後のパラメーターを次のように変更できます。

cmd.Parameters.Append(cmd.CreateParameter("@IsAllowed", adBoolean, adParamOutput))

isAllowed変数は不要になったため、削除することもできます。

于 2012-04-04T19:26:40.050 に答える