RETURN (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

RETURN [ integer_expression ]   

Аргументы

integer_expression
Возвращаемое целочисленное значение. Хранимые процедуры могут возвращать целочисленное значение вызывающей их процедуре или приложению.

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Типы возвращаемых данных

Может возвращать тип int.

Примечание.

Если в документации ничего не указано, все хранимые системные процедуры возвращают значение 0. Это указывает на успех, а ненулевое значение — на ошибку.

Замечания

При использовании в хранимой процедуре инструкция RETURN не может возвращать значение NULL. Если процедура пытается вернуть значение NULL (например, с помощью инструкции RETURN @status, если @status равен NULL), формируется предупредительное сообщение и возвращается значение 0.

Возвращаемое значение состояния можно включать в последующие инструкции Transact-SQL того пакета или той процедуры, из которых вызвана текущая процедура, но строго в следующем формате: EXECUTE @return_status = <procedure_name>.

Примеры

А. Возвращение из процедуры

В следующем примере показано, что, если при выполнении процедуры findjobs не задан параметр имени пользователя, инструкция RETURN заставляет процедуру завершиться после отправки сообщения на пользовательский экран. Если имя пользователя задано, имена всех объектов, созданных пользователем в текущей базе данных, извлекаются из соответствующих системных таблиц.

CREATE PROCEDURE findjobs @nm sysname = NULL  
AS   
IF @nm IS NULL  
    BEGIN  
        PRINT 'You must give a user name'  
        RETURN  
    END  
ELSE  
    BEGIN  
        SELECT o.name, o.id, o.uid  
        FROM sysobjects o INNER JOIN master..syslogins l  
            ON o.uid = l.sid  
        WHERE l.name = @nm  
    END;  

B. Возвращение кодов состояния

В следующем примере проверяется состояние идентификатора заданного контакта. Если значением штата является Washington (WA), то возвращается состояние 1. Иначе возвращается 2 для какого-либо другого условия (значение WA, отличное от StateProvince, или ContactID, для которого нет соответствующей строки).

USE AdventureWorks2022;  
GO  
CREATE PROCEDURE checkstate @param VARCHAR(11)  
AS  
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'  
    RETURN 1  
ELSE  
    RETURN 2;  
GO  

В следующих примерах отображаются состояния, возвращаемые после выполнения процедуры checkstate. В первом показывается контакт в штате Вашингтон, во втором — контакты вне штата Вашингтон, а в третьем — недопустимый контакт. Локальная переменная @return_status должна быть объявлена, прежде чем ее можно будет использовать.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '2';  
SELECT 'Return Status' = @return_status;  
GO  

Результирующий набор:

Return Status 
 
------------- 
 
1

Выполните запрос повторно, указав другой номер контакта.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '6';  
SELECT 'Return Status' = @return_status;  
GO  

Результирующий набор:

Return Status  
-------------  
 
2

Выполните запрос повторно, указав еще один номер контакта.

DECLARE @return_status INT  
EXEC @return_status = checkstate '12345678901';  
SELECT 'Return Status' = @return_status;  
GO  

Результирующий набор:

Return Status  
-------------  
 
2

См. также

ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local_variable (Transact-SQL)
THROW (Transact-SQL)