2012-04-04 23 views
6

He escrito una función de VBScript para llamar a un procedimiento almacenado. En el pasado, he escrito una serie de funciones que llaman procedimientos almacenados con parámetros de entrada, pero en este caso, necesito trabajar con un parámetro de Salida.Llamar al procedimiento almacenado de SQL con parámetro de salida en VBScript

En otra aplicación, llamo al mismo procedimiento almacenado utilizando Entity Framework, por lo que el procedimiento almacenado es correcto.

Aquí está mi código:

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 

Esta función siempre devuelve false. ¿Cómo hago que funcione?

+0

¿Qué es la ubicación del cursor? –

Respuesta

14

Usted debe devolver el valor de su parámetro de salida:

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

Además, los parámetros de salida en ADO no requieren un valor inicial y los parámetros adBoolean no requieren un tamaño, por lo que podría cambiar su la última parametro a:

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

también puede deshacerse de la variable de isAllowed puesto que ya no es necesario.

Cuestiones relacionadas