Поделиться через


Использование инструкции RETURN

Инструкция RETURN безусловно завершает запрос, хранимую процедуру или пакет. Ни одна инструкция в хранимой процедуре или пакете, которая следует за инструкцией RETURN, не выполняется.

Инструкция RETURN, используемая в хранимой процедуре, может указывать целое значение для возврата к вызываемому приложению, пакету или процедуре. Если на инструкции RETURN значение не указано, хранимая процедура возвращает 0.

Большинство хранимых процедур действуют в соответствии с соглашением об использовании кода возврата, чтобы указать успех или неуспех хранимой процедуры. Хранимые процедуры возвращают значение 0, если не было обнаружено ошибок. Любое ненулевое значение указывает на наличие ошибки. Например:

CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
    @MaxTotal INT OUTPUT
AS
-- Declare and initialize a variable to hold @@ERROR.
DECLARE @ErrorSave int;
SET @ErrorSave = 0;
-- Do a SELECT using the input parameter.
SELECT p.FirstName, p.LastName, e.JobTitle
FROM HumanResources.Employee AS e
JOIN Person.Person AS p 
    ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.BusinessEntityID = @EmployeeIDParm;
-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
    SET @ErrorSave = @@ERROR;
-- Set a value in the output parameter.
SELECT @MaxTotal = MAX(TotalDue)
FROM Sales.SalesOrderHeader;
IF (@@ERROR <> 0)
    SET @ErrorSave = @@ERROR;
-- Returns 0 if neither SELECT statement had
-- an error, otherwise returns the last error.
RETURN @ErrorSave;

Пакет Transact-SQL или хранимая процедура, которая выполняет хранимую процедуру, может получить код возврата в целую переменную:

DECLARE @ReturnStatus int;
DECLARE @MaxTotalVariable int;
DECLARE @MaxTotal int;
EXECUTE @ReturnStatus = SampleProcedure @EmployeeIDParm = 65 ,@MaxTotal = @MaxTotalVariable OUTPUT;
PRINT ' ';
PRINT 'Return code = ' + CAST(@ReturnStatus AS CHAR(10));
PRINT 'Maximum Order Total = ' + CAST(@MaxTotalVariable AS CHAR(15));
GO

Приложения, вызывающие хранимую процедуру, могут связать целую переменную с маркером параметра, связанного с кодом возврата.