Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renvoie une valeur et un jeu de résultats à partir d'une procédure stockée classique asp

Vous le faites déjà, combinez simplement les deux.

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

Vous n'avez pas besoin de choisir l'un ou l'autre, ils sont indépendants l'un de l'autre. Le seul problème sera l'ordre de retour, rappelez-vous que les deux OUTPUT et RETURN les valeurs ne seront pas accessibles tant que tous les jeux d'enregistrements renvoyés ne seront pas fermés.

Personnellement, je préfère les fermer tout de suite en les stockant sous forme de tableaux à 2 dimensions.

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