アプリ版:「スタンプのみでお礼する」機能のリリースについて

バッチでのSQL実行結果の分岐処理について。
お世話になっております。
バッチからsqlを実行してその結果によってそれ以降のバッチ全体の処理を停止させる方法を考えています。
手がかりがつかめずまったく先に進めないためアドバイスをいただけますでしょうか。

バッチの内容(start_del.bat)
--------------------------------------------------------
osql -i.\del.sql -o c:\wk\log.txt -S gold -E

osql -i.\create.sql -o c:\wk\log.txt -S gold -E
------------------------------------------------------------


SQLの内容(del.sql)
------------------------------------------------------------
BEGIN TRANSACTION;

DELETE FROM LDDB.dbo.test WHERE b='0';

IF @@ERROR = 0 <--エラー判定にこのコマンドを使おうと考えました
BEGIN
***********************

END
ELSE
BEGIN

**********************
END


COMMIT TRANSACTION;
------------------------------------------------------------
処理の概要:
1.バッチで最初にdel.sqlを実行します。
2.del.sqlの実行が失敗すれば、2つ目のバッチであるcreate.sqlは実行ささずに、バッチを終了させます。
*ポイントはdel.sqlの結果というのは、バッチからdel.sqlを実行できたかではなく、del.sqlの実行結果を判断するという点です。

教えていただきたいこと
・del.sqlの実行後、制御がバッチに戻ったときに、結果を確認してバッチを継続させるか終了させるかを判断させる方法はどのような仕組みを作ればいいのでしょうか。

Windows2003サーバーで、SQLServerは2005です。
初心者のためよく分かっていないことが多すぎで申し訳ありませんが、アドバイスをいただけますでしょうか。
よろしくお願いいたします。

A 回答 (3件)

こんにちは



SQLの実行結果を取得する場合、ストアドを作成するのが一般的だと思います。
    • good
    • 0

No1の方の言うとおりですね。

トリガーを利用してもいいし。

BATならBATらしく使う手もあります。例えば osqlの出力を利用す手です。

osql -i.\del.sql -o c:\wk\log.txt -S gold -E > a.txt

でa.txtの内容で判断する方法。これが最も簡単ですね。標準出力とエラー出力に分けてもいいですね。それでも判断できます。

後はosqlを終わらせるexit にエラーコードが付加できればいいんですけどね。できなかったけ?
    • good
    • 0

コマンドEXITを使って、@@ERRORの値を返すとか。


詳しくはosqlあるいはsqlcmdのコマンドリファレンスをご覧ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す