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)