RETURN (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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.
Conventions de la syntaxe Transact-SQL
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.
Types de retour
Retourne éventuellement int.
Notes
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.
Remarques
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. Toutefois, il est nécessaire de respecter le format suivant : EXECUTE @return_status = <procedure_name>
.
Exemples
R. 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 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
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 le jeu de résultats obtenu.
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 le jeu de résultats obtenu.
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 le jeu de résultats obtenu.
Return Status
-------------
2
Voir aussi
ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local_variable (Transact-SQL)
THROW (Transact-SQL)