RETURN の使用
RETURN ステートメントは、クエリ、ストアド プロシージャ、またはバッチを無条件で終了させます。ストアド プロシージャまたはバッチ内の、RETURN ステートメントに続くステートメントはどれも実行されません。
ストアド プロシージャ内で RETURN ステートメントを使用する場合は、呼び出し側のアプリケーション、バッチ、またはプロシージャに返す整数値を RETURN ステートメントが指定できます。RETURN ステートメントで値が指定されなかった場合、ストアド プロシージャは値 0 を返します。
ほとんどのストアド プロシージャはリターン コードの使用規則に従って、ストアド プロシージャの成否を示します。エラーが発生しなかった場合、ストアド プロシージャは値 0 を返します。0 以外の値が返された場合は、エラーが発生したことを意味します。次に例を示します。
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;
ストアド プロシージャを実行する 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
ストアド プロシージャを呼び出すアプリケーションは、リターン コードに対応するパラメーター マーカーを整数の変数にバインドできます。