概要
バッチファイルから SQL*Plusを起動し、実行結果をバッチファイルに戻す方法。
※1レコード、1カラムのみ
※1レコード、1カラムのみ
はじめに
バッチ処理を作っていて、下記の様な制御が必要になりました。
-------------------------------------------------
テーブルHOGEにステータスXXXのレコードが
1件以上ある → 次の処理を実行
1件未満 → 5分待機して再度検索
-------------------------------------------------
SQL*Plusをバッチで呼び出して、結果をバッチ内の変数に格納した話です。
-------------------------------------------------
テーブルHOGEにステータスXXXのレコードが
1件以上ある → 次の処理を実行
1件未満 → 5分待機して再度検索
-------------------------------------------------
SQL*Plusをバッチで呼び出して、結果をバッチ内の変数に格納した話です。
実装方法
バッチファイル
select.sql
@echo off rem ORACLE接続情報 set connection=user/password rem SQLを実行 sqlplus.exe -s %connection% @.\select.sql set result=%ERRORLEVEL% if %result% geq 1 (rem SELECT結果が1件以上ある場合 処理Aの内容 ) else ( timeout 300 call %0 ) exit
select.sql
VARIABLE cnt NUMBER; DECLARE BEGIN SELECT COUNT(1) INTO :cnt FROM HOGE_TABLE WHERE STATUS = 'XXX' END; / EXIT :cnt /
バッチファイルでは戻り値を変数ERRORLEVELで扱うので、こういうことができるらしいです。
1レコード/1カラム限定なので用途は限られますが、PL/SQL書くほどでもないって時には便利です
セミコロン足りなくないですか?
返信削除