RETURN (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric
Служит для безусловного выхода из запроса или процедуры. Инструкция RETURN выполняется немедленно и полностью и может использоваться в любой точке для выхода из процедуры, пакета или блока инструкций. Инструкции, следующие после RETURN, не выполняются.
Соглашения о синтаксисе Transact-SQL
Синтаксис
RETURN [ integer_expression ]
Аргументы
integer_expression
Возвращаемое целочисленное значение. Хранимые процедуры могут возвращать целочисленное значение вызывающей их процедуре или приложению.
Типы возвращаемых данных
Может возвращать тип 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)