使用 RETURN
RETURN 陳述式可無條件終止查詢、預存程序或批次。位在 RETURN 陳述式後面的預存程序或批次中的任何陳述式,都不會執行。
RETURN 用於預存程序時,能夠指定整數值傳回至發呼叫的應用程式、批次或程序。如果 RETURN 中沒有指定值,則預存程序傳回值為 0。
大部份預存程序遵照使用傳回碼的慣例,來指出預存程序成功或失敗。若沒有發現錯誤,則預存程序傳回 0 值。非零值表示有發生錯誤。例如:
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
執行預存程序的 Transact-SQL 批次或預存程序,可擷取傳回碼並放到整數變數中:
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
呼叫預存程序的應用程式可將對應傳回碼的參數標記繫結至整數變數。