sql >> Base de Datos >  >> RDS >> Sqlserver

Devuelve un valor y un conjunto de resultados del procedimiento almacenado asp clásico

Ya lo estás haciendo, simplemente combina los dos.

Set cmd = CreateObject("ADODB.Command")
with cmd
    .ActiveConnection = cnnstr
    .CommandType = adCmdStoredProc
    .CommandText = "CheckEmployeeId"
    .Parameters.Refresh
    .Parameters("@EmployeeName") = EmployeeName
    Set rst = .Execute()
end with
'You will need to close the Recordset before returning the RETURN_VALUE.
RetVal = cmd.Parameters("@RETURN_VALUE")

No hace falta que elijas uno u otro, son independientes entre sí. El único problema será el orden en que devuelvan, recuerda que tanto OUTPUT y RETURN no se podrá acceder a los valores hasta que se cierren todos los conjuntos de registros devueltos.

Personalmente, prefiero cerrarlos de inmediato almacenándolos como matrices bidimensionales.

Set cmd = CreateObject("ADODB.Command")
with cmd
    .ActiveConnection = cnnstr
    .CommandType = adCmdStoredProc
    .CommandText = "CheckEmployeeId"
    .Parameters.Refresh
    .Parameters("@EmployeeName") = EmployeeName
    Set rst = .Execute()
    If Not rst.EOF Then data = rst.GetRows()
    Call rst.Close()
end with
RetVal = cmd.Parameters("@RETURN_VALUE")

'Access Recordset array
If IsArray(data) Then
  'Return first column, first row.
  Response.Write data(0, 0)
End If