Compartilhar via


RETURN (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric

Sai incondicionalmente de uma consulta ou procedimento. RETURN é imediato e completo e pode ser usado em qualquer ponto para sair de um procedimento, lote ou bloco de instruções. As instruções posteriores a RETURN não são executadas.

Convenções de sintaxe de Transact-SQL

Sintaxe

RETURN [ integer_expression ]   

Argumentos

integer_expression
É o valor inteiro que é retornado. Os procedimentos armazenados podem retornar um valor inteiro a um procedimento de chamada ou um aplicativo.

Tipos de retorno

Opcionalmente, retorna int.

Observação

A menos que seja documentado o contrário, todos os procedimentos armazenados de sistema retornam o valor 0. Isto indica sucesso e um valor diferente de zero indica falha.

Comentários

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 @status quando @status for NULL), será gerada uma mensagem de aviso, e o valor 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 método atual, mas deve ser inserido no seguinte formato: EXECUTE @return_status = <procedure_name>.

Exemplos

a. Retornando de um procedimento

O exemplo a seguir mostra que se nenhum nome de usuário estiver especificado como um parâmetro quando findjobs for executado, RETURN fará com que o procedimento seja encerrado depois que uma mensagem for enviada à 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 do 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 do ID de um contato especificado. Se o estado for Washington (WA), um status 1 será retornado. Caso contrário, 2 será retornado para qualquer outra condição (um valor diferente de WA para StateProvince ou ContactID que não correspondeu 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 de checkstate. O primeiro mostra um contato em Washington; o segundo, um contato que não é de Washington; e o terceiro, um contato que não é válido. A variável local @return_status deve ser declarada antes que possa ser usada.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '2';  
SELECT 'Return Status' = @return_status;  
GO  

Veja a seguir o conjunto de resultados.

Return Status 
 
------------- 
 
1

Executar 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  

Veja a seguir o conjunto de resultados.

Return Status  
-------------  
 
2

Executar a consulta novamente, especificando outro número de contato.

DECLARE @return_status INT  
EXEC @return_status = checkstate '12345678901';  
SELECT 'Return Status' = @return_status;  
GO  

Veja a seguir o conjunto de resultados.

Return Status  
-------------  
 
2

Confira também

ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local_variable (Transact-SQL)
THROW (Transact-SQL)