Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Geben Sie einen Wert und eine Ergebnismenge aus der klassischen Asp-Prozedur zurück

Sie tun es bereits, kombinieren Sie einfach die beiden.

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")

Sie müssen sich nicht für das eine oder das andere entscheiden, sie sind unabhängig voneinander. Das einzige Problem wird die Reihenfolge sein, in der sie zurückgegeben werden. Denken Sie daran, dass beide OUTPUT und RETURN Auf Werte kann erst zugegriffen werden, wenn alle zurückgegebenen Recordsets geschlossen sind.

Ich persönlich bevorzuge es, sie sofort zu schließen, indem ich sie als zweidimensionale Arrays speichere.

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