現在初めてバッチを作成していますが、 その中でosqlでSPを実行した後にERRORLEVELを取得しています。
SPの中でエラーが発生した場合も、発生しない場合も、 ECHO %ERRORLEVEL% のコマンドを実行すると -100 が返ってきます。
ERRORLEVELは0〜255の値が返ってくるという認識でしたので、
どのパターンでそうなるのか全くわかりません。
インターネットでも調べてはみましたがわかりませんでした。
とても初歩的な質問かもしれませんが、回答をいただければうれしいです。
--TEST.bat
osql /U [ユーザ] /P [パスワード] /d [データベース名] /S [サーバー名] /q "exit([SP名])" >> test.log
ECHO ERRORLEVEL = %ERRORLEVEL%>> test.log
-- SPのソース
CREATE PROCEDURE SP_TEST AS
PRINT 'TEST'
PRINT 'aa'
--print 10/0
GO
※『print 10/0』をコメントにしても、しなくても -100でした。 また、'TEST'と'aa'はログに表示されています。
> ECHO %ERRORLEVEL% のコマンドを実行すると -100 が返ってきます。
参考URLによると 「戻り値を選択する前に、エラーが発生した。 」 ということになりますかねぇ。
> ERRORLEVELは0〜255の値が返ってくるという認識でしたので、
MS-DOS時代ってことですかねぇ。。。
OSのバージョンによって取りうる値の範囲は違います。
ちゃんと調べたわけではないので、正確な範囲は不明です。
library/ms162806.aspx