Utilizzo di RETURN
L'istruzione RETURN consente di interrompere in modo incondizionato una query, una stored procedure o un batch. Le istruzioni di una stored procedure o di un batch che seguono l'istruzione RETURN non vengono eseguite.
Quando viene utilizzata in una stored procedure, l'istruzione RETURN può specificare un valore integer da restituire al batch, alla procedura o all'applicazione che ha eseguito la chiamata. Se per RETURN non viene specificato alcun valore, una stored procedure restituisce il valore 0.
Nella maggior parte dei casi, le stored procedure utilizzano un codice restituito specifico per indicare se sono state eseguite correttamente o meno. Il valore 0 viene restituito quando non si è verificato alcun errore. Qualsiasi valore diverso da zero indica che si è verificato un errore. Ad esempio:
USE AdventureWorks;
GO
-- Create a procedure that takes one input parameter
-- and returns one output parameter and a return code.
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 c.FirstName, c.LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE EmployeeID = @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;
GO
Un batch o una stored procedure Transact-SQL che esegue a sua volta una stored procedure può recuperare il codice restituito in una variabile integer:
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
Le applicazioni che chiamano una stored procedure possono associare a una variabile integer un indicatore di parametro corrispondente al codice restituito.
Vedere anche