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.
Conventions 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>
.
Remarque : |
---|
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.
Remarque : |
---|
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)