RETURN (Transact-SQL)
Служит для безусловного выхода из запроса или процедуры. Инструкция RETURN выполняется немедленно и полностью и может использоваться в любой точке для выхода из процедуры, пакета или блока инструкций. Инструкции, следующие после RETURN, не выполняются.
Синтаксис
RETURN [ integer_expression ]
Аргументы
- integer_expression
Возвращаемое целочисленное значение. Хранимые процедуры могут возвращать целочисленное значение вызывающей их процедуре или приложению.
Типы возвращаемых данных
Может возвращать int.
Примечание |
---|
Если в документации ничего не указано, все хранимые системные процедуры возвращают значение 0. Это указывает на успех, а ненулевое значение — на ошибку. |
Замечания
При использовании в хранимой процедуре инструкция RETURN не может возвращать значение NULL. Если процедура пытается вернуть значение NULL (например, с помощью инструкции RETURN @status, если @status равен NULL), формируется предупредительное сообщение и возвращается значение 0.
Возвращаемое значение состояния может быть включено в последующие инструкции Transact-SQL пакета или процедуры, выполняющей текущую процедуру, но должно вводиться в следующем формате: EXECUTE @return_status = <procedure_name>.
Примеры
A. Возвращение из процедуры
В следующем примере показано, что, если при выполнении процедуры 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;
Б. Возвращение кодов состояния
В следующем примере проверяется состояние идентификатора заданного контакта. Если значением штата является Washington (WA), то возвращается состояние 1. Иначе возвращается 2 для какого-либо другого условия (значение StateProvince, отличное от WA, или BusinessEntityID, для которого нет соответствующей строки).
USE AdventureWorks2008R2;
GO
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE BusinessEntityID = @param) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
В следующих примерах отображаются состояния, возвращаемые после выполнения процедуры checkstate. В первом показывается контакт в штате Вашингтон, во втором — контакты вне штата Вашингтон, а в третьем — недопустимый контакт. Локальная переменная @return_status должна быть объявлена, прежде чем ее можно будет использовать.
DECLARE @return_status int;
EXEC @return_status = checkstate '291';
SELECT 'Return Status' = @return_status;
GO
Ниже приводится результирующий набор.
Возвращаемое состояние
-------------
1
Выполните запрос повторно, указав другой номер контакта.
DECLARE @return_status int;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO
Ниже приводится результирующий набор.
Возвращаемое состояние
-------------
2
Выполните запрос повторно, указав еще один номер контакта.
DECLARE @return_status int
EXEC @return_status = checkstate '12345678901';
SELECT 'Return Status' = @return_status;
GO
Ниже приводится результирующий набор.
Возвращаемое состояние
-------------
2