RETURN (Transact-SQL)
Служит для безусловного выхода из запроса или процедуры. Инструкция 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;
Б.Возвращение кодов состояния
В следующем примере проверяется состояние идентификатора заданного контакта. Если значением штата является Washington (WA), то возвращается состояние 1. Иначе возвращается 2 для какого-либо другого условия (значение StateProvince, отличное от WA, или ContactID, для которого нет соответствующей строки).
USE AdventureWorks2012;
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)