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 traitement ou un bloc d'instructions. Les instructions qui suivent RETURN ne sont pas exécutées.
Syntaxe
RETURN [ integer_expression ]
Arguments
- integer_expression
Valeur entière qui est retournée. Les procédures stockées peuvent retourner une valeur entière à une procédure appelante ou à une application.
Retourne les Types
Renvoie facultativement int.
[!REMARQUE]
Sauf spécification contraire, toutes les procédures stockées système retournent la valeur 0. Celle-ci indique la réussite d'une procédure ; une valeur différente de zéro indique un échec.
Notes
Utilisée avec une procédure stockée, l'instruction RETURN ne peut pas retourner de valeur Null. Si une procédure tente de retourner 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 retournée.
Il est possible d'inclure la valeur de l'état retourné 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>.
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 retournée. Sinon, le code 2 est retourné 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 retourné à 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