2012-04-04 12 views
6

Ho scritto una funzione VBScript per chiamare una stored procedure. In passato, ho scritto una serie di funzioni che chiamavano stored procedure con parametri di input, ma in questo caso, ho bisogno di lavorare con un parametro Output.Chiamata alla stored procedure SQL con parametro di output in VBScript

In un'altra applicazione, chiamo la stessa procedura memorizzata utilizzando Entity Framework, quindi la procedura memorizzata va bene.

Ecco il mio codice:

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 

Questa funzione restituisce sempre false. Come posso farlo funzionare?

+0

Qual è la posizione del cursore –

risposta

14

Si dovrebbe restituire il valore del vostro parametro di uscita:

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

Inoltre, i parametri di output in ADO non richiedono un valore iniziale e parametri adBoolean non richiedono una dimensione, così si potrebbe cambiare il vostro il ultima paramter a:

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

si potrebbe anche sbarazzarsi della vostra variabile isAllowed dal momento che non è più necessario.

Problemi correlati