【SQL Server】ストアドプロシージャの戻り値について調査した

背景

・ストアドプロシージャを実行したら、戻り値が「-6」だった

・「-6」が何を意味するのか調査したが、見つけることができなかった

・見つけられなかったということは(公式ドキュメントに無い?)、暗に「戻り値は使うな」と
 公式が言っている可能性がある。「OUTPUTパラメータを使え」と言っている能性がある

調査結果

・正常終了の場合、デフォルトの戻り値は「0」
・例外が発生し例外処理(Try~Catch)を実施している場合、デフォルトの戻り値は「-6」

サンプルプログラム(正常終了)

CREATE PROCEDURE [dbo].[ReturnValueProcedure] 
	--引数と戻り値の宣言
AS
BEGIN
	--トランザクション開始
	BEGIN TRY
		RETURN
	END TRY 

	BEGIN CATCH
		RETURN 12345 --例外発生時は返り値が12345となるようにする
	END CATCH
END
GO

結果(正常終了)

●戻り値は「0」

サンプルプログラム(例外発生で例外処理を実施)

CREATE PROCEDURE [dbo].[ReturnValueProcedure] 
	--引数と戻り値の宣言
AS
BEGIN
	--変数の宣言
	DECLARE
		@intTemp int
	--トランザクション開始
	BEGIN TRY
		--int型の変数へ文字列を代入によりエラー発生
		SET @intTemp = 'eiueo'
		RETURN 12345 --正常終了時は返り値が12345となるようにする
	END TRY 

	BEGIN CATCH
		RETURN
	END CATCH
END
GO

結果(例外発生で例外処理を実施)

●戻り値は「-6」

補足

「RETURN 12345」等の記述により、戻り値を任意の値へ変更可能



タイトルとURLをコピーしました