Batでストアドの戻り値を取得


%errorlevel%を使用するとsqlcmdで直近に実行したSELECTの結果を取得することができる


なので、Batでストアドの戻り値を取得したい場合は
ストアドの戻り値をSELECT文で返すようBatファイルで記述すればよい



以下、使用例


呼び出し元Bat

::ストアドの実行
sqlcmd /U "hogeuser" /P "hogepass" /d "hogeDb" /S "hogeServer" /b /Q "EXIT( DECLARE @ret int; EXEC @ret = ProcTest; SELECT @ret )"


        if %errorlevel% NEQ 0 goto 9100

        echo %errorlevel% 
        echo "正常"

        goto END

:9100
        echo "エラー

:END

pause

ProcTest(呼び出し先ストアド)

CREATE         PROCEDURE [dbo].[ProcTest]
AS

BEGIN

	--トランザクションの開始
	BEGIN TRAN


	-- コミット処理
	COMMIT TRAN

	RETURN (00)

END --ALL END
--------------------------------------------
-- エラー処理
--------------------------------------------
ERROR_RETURN:
BEGIN

	-- ロールバックを行う
	ROLLBACK TRAN

END


動作確認環境:Windows Server 2008,SQL Server 2008