2012-04-04 13 views
6

Ich habe eine VBScript-Funktion geschrieben, um eine gespeicherte Prozedur aufzurufen. In der Vergangenheit habe ich eine Reihe von Funktionen geschrieben, die gespeicherte Prozeduren mit Eingabeparametern aufrufen, aber in diesem Fall muss ich mit einem Output-Parameter arbeiten.Aufruf von SQL Stored Procedure mit Ausgabeparameter in VBScript

In einer anderen Anwendung rufe ich die exakt gleiche gespeicherte Prozedur mit dem Entity Framework, so dass die gespeicherte Prozedur in Ordnung ist.

Hier ist mein Code:

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 

Diese Funktion gibt immer false zurück. Wie kann ich es funktionieren lassen?

+0

Was ist die Cursorposition? –

Antwort

14

Sie sollten den Wert Ihrer Ausgabeparameter zurück:

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

Auch Ausgabeparameter in ADO erfordern nicht einen Anfangswert und adBoolean Parameter keine Größe benötigen, so dass Sie Ihre ändern könnte die letzter Paramter zu:

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

Sie auch Ihre isAllowed Variable loswerden könnten, da es nicht mehr notwendig ist.