Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Sai incondicionalmente de uma consulta ou procedimento. RETURN é imediato e completo e pode ser usado a qualquer momento para sair de um bloco de procedimento, lote ou extrato. As instruções que seguem RETURN não são executadas.
Transact-SQL convenções de sintaxe
Syntax
RETURN [ integer_expression ]
Arguments
integer_expression
É o valor inteiro que é retornado. Os procedimentos armazenados podem retornar um valor inteiro para um procedimento de chamada ou um aplicativo.
Tipos de devolução
Opcionalmente retorna int.
Note
A menos que documentado de outra forma, todos os procedimentos armazenados do sistema retornam um valor de 0. Isso indica sucesso e um valor diferente de zero indica falha.
Remarks
Quando usado com um procedimento armazenado, RETURN não pode retornar um valor nulo. Se um procedimento tentar retornar um valor nulo (por exemplo, usando RETURN @status quando @status é NULL), uma mensagem de aviso será gerada e um valor de 0 será retornado.
O valor de status de retorno pode ser incluído em instruções Transact-SQL subsequentes no lote ou procedimento que executou o procedimento atual, mas deve ser inserido da seguinte forma: EXECUTE @return_status = <procedure_name>.
Examples
A. Regresso de um procedimento
O exemplo a seguir mostra se nenhum nome de usuário é especificado como um parâmetro quando findjobs é executado, RETURN faz com que o procedimento saia depois que uma mensagem foi enviada para a tela do usuário. Se um nome de usuário for especificado, os nomes de todos os objetos criados por esse usuário no banco de dados atual serão recuperados das tabelas de sistema apropriadas.
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. Retornando códigos de status
O exemplo a seguir verifica o estado da ID de um contato especificado. Se o estado for Washington (WA), um status de 1 é retornado. Caso contrário, 2 será retornado para qualquer outra condição (um valor diferente de WA for StateProvince ou ContactID que não corresponda a uma linha).
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
Os exemplos a seguir mostram o status de retorno da execução checkstatedo . O primeiro mostra um contato em Washington; o segundo, contato não em Washington; e o terceiro, um contato que não é válido. A @return_status variável local deve ser declarada antes de poder ser usada.
DECLARE @return_status INT;
EXEC @return_status = checkstate '2';
SELECT 'Return Status' = @return_status;
GO
Aqui está o conjunto de resultados.
Return Status
-------------
1
Execute a consulta novamente, especificando um número de contato diferente.
DECLARE @return_status INT;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO
Aqui está o conjunto de resultados.
Return Status
-------------
2
Execute a consulta novamente, especificando outro número de contato.
DECLARE @return_status INT
EXEC @return_status = checkstate '12345678901';
SELECT 'Return Status' = @return_status;
GO
Aqui está o conjunto de resultados.
Return Status
-------------
2
Ver também
ALTERAR PROCEDIMENTO (Transact-SQL)
CRIAR PROCEDIMENTO (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
EXECUTAR (Transact-SQL)
SET @local_variable (Transact-SQL)
LANÇAMENTO (Transact-SQL)