Я хочу получить как код возврата, так и результат, полученный из хранимой процедуры в классическом ASP.Возвращает значение и набор результатов из хранимой процедуры classic asp
CREATE PROCEDURE CheckEmployeeId
@EmployeeName nvarchar(255)
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@Exists INT
, @RowCount Int = 0
, @ReturnValue Int = 1
SELECT EmployeeId FROM Employees WHERE Name = @EmployeeName
set @RowCount = @@ROWCOUNT
if (@RowCount <> 1)
BEGIN
SET @ReturnValue = 2
END
ELSE
BEGIN
SET @ReturnValue = 1
END
RETURN @ReturnValue
END
Таким образом, в ASP я могу сделать следующее, чтобы получить возвращаемое значение
Set cmd = CreateObject("ADODB.Command")
with cmd
.ActiveConnection = cnnstr
.CommandType = adCmdStoredProc
.CommandText = "CheckEmployeeId"
.Parameters.Refresh
.Parameters("@EmployeeName") = EmployeeName
end with
cmd.Execute()
RetVal = cmd.Parameters("@RETURN_VALUE")
или это, чтобы установить результат.
Set cmd = CreateObject("ADODB.Command")
with cmd
.ActiveConnection = cnnstr
.CommandType = adCmdStoredProc
.CommandText = "CheckEmployeeId"
.Parameters.Refresh
.Parameters("@EmployeeName") = EmployeeName
Set rst = .Execute()
end with
Есть ли способ получить оба?
Возвращаемое значение предназначено для возврата кода состояния выполнения, а не для возврата значений. Если вы хотите получать значения из процедуры, вы должны использовать параметры OUTPUT. –
@SeanLange они используют его для возврата статуса выполнения, 2 без записей и 1 для некоторых. – Lankymart
@ Lankymart Я буду вежливо не согласен. Это не возвращает статус выполнения, он возвращает логическое значение. Это отличный пример того, когда мы должны использовать выходной параметр. –