RETURN (Transact-SQL)

Permet de quitter sans condition une requête ou une procédure. RETURN a une action immédiate et complète, et elle est utilisable à tout moment pour quitter une procédure, un lot ou un bloc d'instructions. Les instructions qui suivent RETURN ne sont pas exécutées.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

RETURN [ integer_expression ] 

Arguments

expression_entier

Valeur entière qui est renvoyée. Les procédures stockées peuvent renvoyer une valeur entière à une procédure appelante ou à une application.

Notes

Utilisée avec une procédure stockée, l'instruction RETURN ne peut pas renvoyer de valeur NULL. Si une procédure tente de renvoyer une valeur NULL (par exemple à l'aide de RETURN @status alors que @status est NULL), un avertissement est généré et une valeur de 0 est renvoyée.

Il est possible d'inclure la valeur de l'état renvoyé dans des instructions Transact-SQL suivantes du lot ou de la procédure ayant exécuté la procédure en cours, mais il convient dans ce cas de respecter la forme suivante : EXECUTE @return_status = <procedure_name>.

ms174998.note(fr-fr,SQL.90).gifRemarque :
Le paramètre de niveau de compatibilité détermine si une chaîne vide (NULL) est interprétée comme un espace unique ou comme une vraie chaîne vide. Si le niveau de compatibilité est inférieur ou égal à 65, SQL Server 2005 interprète les chaînes vides comme des espaces simples. Si le niveau de compatibilité est égal à 70, SQL Server interprète les chaînes vides comme telles. Pour plus d'informations, consultez sp_dbcmptlevel (Transact-SQL).

Retourne les Types

Renvoie facultativement int.

ms174998.note(fr-fr,SQL.90).gifRemarque :
Sauf spécification contraire, toutes les procédures stockées du système renvoient la valeur 0 pour indiquer la réussite, ou une valeur différente de zéro pour indiquer un échec.

Exemples

A. Sortie d'une procédure

Cet exemple montre que si aucun nom d'utilisateur n'est fourni en tant que paramètre lors de l'exécution de findjobs, RETURN met un terme à la procédure après envoi d'un message à l'utilisateur. Si en revanche un nom d'utilisateur est fourni, les noms de tous les objets créés par celui-ci dans la base de données active sont récupérés dans les tables système adéquates.

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. Renvoi des codes d'état

L'exemple suivant vérifie l'état de résidence aux États-Unis pour l'ID d'un contact spécifié. Si l'état est Washington (WA), une valeur de 1 est renvoyée. Sinon, le code 2 est renvoyé pour toute autre condition (valeur différente de WA pour StateProvince ou ContactID qui ne correspond pas à une ligne).

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

Les exemples suivants indiquent le code d'état renvoyé à la suite de l'exécution de checkstate. Le premier montre un contact à Washington ; le second, un contact qui n'est pas à Washington ; et le troisième, un contact qui n'est pas valide. La variable locale @return_status doit être déclarée avant d'être utilisée.

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

Voici l'ensemble des résultats. 

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

Exécutez à nouveau la requête, en spécifiant un numéro de contact différent.

DECLARE @return_status int;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO

Voici l'ensemble des résultats. 

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

Exécutez à nouveau la requête, en spécifiant un autre numéro de contact.

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

Voici l'ensemble des résultats. 

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

Voir aussi

Référence

ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local\_variable (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005