Utilisation de l'instruction RETURN

L'instruction RETURN met fin sans condition à une requête, à une procédure stockée ou à un traitement. Les instructions d'une procédure stockée ou d'un traitement qui suivent l'instruction RETURN ne sont pas exécutées.

Dans une procédure stockée, l'instruction RETURN peut spécifier une valeur de type entier à retourner à l'application, à la procédure ou au traitement appelant. Si aucune valeur n'a été spécifiée pour l'instruction RETURN, la procédure stockée retourne la valeur 0.

La plupart des procédures stockées utilisent la convention consistant à utiliser le code de retour pour indiquer si une procédure stockée a réussi ou échoué. Les procédures stockées retournent la valeur 0 lorsqu'aucune erreur n'a été rencontrée. Toute valeur autre que zéro indique qu'une erreur s'est produite. Exemple :

CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
    @MaxTotal INT OUTPUT
AS
-- Declare and initialize a variable to hold @@ERROR.
DECLARE @ErrorSave int;
SET @ErrorSave = 0;
-- Do a SELECT using the input parameter.
SELECT p.FirstName, p.LastName, e.JobTitle
FROM HumanResources.Employee AS e
JOIN Person.Person AS p 
    ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.BusinessEntityID = @EmployeeIDParm;
-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
    SET @ErrorSave = @@ERROR;
-- Set a value in the output parameter.
SELECT @MaxTotal = MAX(TotalDue)
FROM Sales.SalesOrderHeader;
IF (@@ERROR <> 0)
    SET @ErrorSave = @@ERROR;
-- Returns 0 if neither SELECT statement had
-- an error, otherwise returns the last error.
RETURN @ErrorSave;

Un traitement Transact-SQL ou une procédure stockée qui exécute une procédure stockée peut récupérer le code de retour dans une variable de type entier :

DECLARE @ReturnStatus int;
DECLARE @MaxTotalVariable int;
DECLARE @MaxTotal int;
EXECUTE @ReturnStatus = SampleProcedure @EmployeeIDParm = 65 ,@MaxTotal = @MaxTotalVariable OUTPUT;
PRINT ' ';
PRINT 'Return code = ' + CAST(@ReturnStatus AS CHAR(10));
PRINT 'Maximum Order Total = ' + CAST(@MaxTotalVariable AS CHAR(15));
GO

Les applications qui appellent une procédure stockée peuvent lier à une variable de type entier un marqueur de paramètre correspondant au code de retour.