Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornar um valor e um conjunto de resultados do asp clássico de procedimento armazenado


Você já está fazendo isso basta combinar os dois.
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")

Você não precisa escolher um ou outro, pois são independentes um do outro. O único problema será a ordem que eles retornam, lembre-se que tanto OUTPUT e RETURN os valores não estarão acessíveis até que todos os Recordsets retornados sejam fechados.

Pessoalmente, prefiro fechá-los imediatamente armazenando-os como Matrizes de 2 Dimensões.
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