RETURN (Transact-SQL)
クエリまたはプロシージャを無条件で終了します。RETURN は即時に実行され、完了します。また、プロシージャ、バッチ、またはステートメント ブロックを終了する任意の位置で使用できます。RETURN の後に続くステートメントは実行されません。
構文
RETURN [ integer_expression ]
引数
integer_expression
返される整数値です。ストアド プロシージャは、呼び出しプロシージャまたはアプリケーションに整数値を返すことができます。
戻り値の型
場合によっては int を返します。
メモ : |
---|
特に記述がない限り、どのシステム ストアド プロシージャも、成功した場合は 0 を、失敗した場合は 0 以外の値をそれぞれ返します。 |
解説
ストアド プロシージャと一緒に使用する場合、RETURN は NULL 値を返すことができません。プロシージャが NULL 値を返そうとすると (たとえば、@status の値が NULL のときに RETURN @status を使用)、警告メッセージが生成されて値 0 が返されます。
現在のプロシージャを実行したバッチまたはプロシージャの中の後続の Transact-SQL ステートメントに、返されたステータス値を指定できます。この場合、EXECUTE @return_status = <procedure_name>
の形式で入力する必要があります。
メモ : |
---|
互換性レベルの設定によって、空の文字列 (NULL) を単一のスペースまたは実際の空文字列のどちらとして解釈するか決定します。互換性レベルが 65 以下の場合、SQL Server 2005 は空文字列を 1 つのスペースとして解釈します。互換性レベルが 70 の場合は、SQL Server は空文字列を空文字列と解釈します。詳細については、「sp_dbcmptlevel (Transact-SQL)」を参照してください。 |
例
A. プロシージャを終了する
次の例では、findjobs
を実行するときにユーザー名がパラメータとして指定されていない場合、ユーザーの画面にメッセージを出力後、RETURN
でプロシージャを終了します。ユーザー名が指定された場合は、そのユーザーが現在のデータベースに作成したすべてのオブジェクトの名前を、適切なシステム テーブルから取得します。
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. ステータス コードを返す
次の例では、指定した連絡先の ID の状態をチェックします。状態が Washington (WA
) である場合は、1
の状態が返されます。StateProvince
が WA
以外の値であったり、ContactID
が行に一致しないなど、それ以外のすべての場合は、2
を返します。
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
次の例では、checkstate
を実行して得られる戻りステータスを示します。最初は Washington の連絡先、2 つ目は Washington 以外の連絡先、3 つ目は有効でない連絡先を示しています。@return_status
ローカル変数は、これを宣言してからでないと使用できません。
DECLARE @return_status int;
EXEC @return_status = checkstate '2';
SELECT 'Return Status' = @return_status;
GO
以下に結果セットを示します。
Return Status
-------------
1
別の連絡先番号を指定して、クエリを再び実行します。
DECLARE @return_status int;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO
以下に結果セットを示します。
Return Status
-------------
2
別の連絡先番号を指定して、クエリを再び実行します。
DECLARE @return_status int
EXEC @return_status = checkstate '12345678901';
SELECT 'Return Status' = @return_status;
GO
以下に結果セットを示します。
Return Status
-------------
2
参照
関連項目
ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local\_variable (Transact-SQL)