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>
.
Примечание. |
---|
Настройка уровня совместимости определяет, будет ли интерпретироваться пустая строка (NULL) как одиночный пробел или как настоящая пустая строка. Если уровень совместимости меньше или равен 65, SQL Server 2005 рассматривает пустые строки как одиночные пробелы. Если уровень совместимости равен 70, SQL Server рассматривает пустые строки в виде пустых строк. Дополнительные сведения см. в разделе sp_dbcmptlevel (Transact-SQL). |
Примеры
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
, или ContactID
, для которого нет соответствующей строки).
USE AdventureWorks;
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)