windowsサーバでのSQL*plus実行バッチの1ファイル化

■課題
windowsサーバでOracleを使用する場合、定型処理によるクエリ発行をすることがあります。
バッチ化してタスクスケジューラで実行するなどで対策しますが
その際、SQL*Plus実行のバッチファイルとSQL*Plusで実行するクエリを記述した
SQLファイルを別々に管理する必要があり、ペアリングして管理する必要があります。
今回はこの課題を解決するため、SQL*Plus実行のバッチファイルとクエリを1つのファイルにまとめる方法をご紹介します。
これにより、管理の負担を軽減し、運用効率を向上させることが期待できます。
ぜひ最後までご覧ください!
■解決方法
バッチファイルとSQLファイルはそれぞれ異なった文法をしており、コメント宣言に違いがあります。
・SQLファイルでのコメント記述
①REM 文頭に宣言することでその行をコメントと判定する
②– 文中に記述することでそれ以降をコメントと判定する
③/* ~ */ 「/*」から「*/」で囲まれた範囲をコメントと判定する
・バッチファイルでのコメント記述
①REM 文頭に宣言することでその行をコメントと判定する
②REM/ || ( ~ ) 「(」から「)」で囲まれた範囲をコメントと判定する
また文末に^(キャレット)をつけることで行の分割ができます。
REM ・・・・^とすることで、次の行もコメントとして扱うことができます。
■バッチファイルの記述内容
コメントの宣言の違いを利用して、batファイル内に以下の通り記述します。
・バッチファイル(.bat)の記述
①REM^
②/*
③バッチコマンドを記述(SQL*plus実行など)
・
・
・
④EXIT 0
⑤*/
⑥SQL*plusで実行するクエリを記述
・
・
・
①
バッチ REMで始まるコメント行と判定
SQL REMで始まるコメント行と判定
②
バッチ 1行目の文末に「^」があるのでコメント行と判定
SQL ブロックコメント行の開始と判定
③
バッチ バッチコマンド行として実行(複数行可)
「SQL*Plus @”%~f0″」と記述すると自分自身をSQLファイルとしてSQL*Plusを実行
SQL ブロックコメント内と判定
④
バッチ バッチを終了する
SQL ブロックコメント内と判定
⑤
バッチ ④で終了していいるので到達しない
SQL ブロックコメント終了行と判定
⑥
バッチ ④で終了していいるので到達しない
SQL SQL*Plusで実行するクエリと判定(複数行可)
バッチファイルとしては③~④が有効で
SQLファイルとしては⑥~が有効となる
以上の方法でSQL*Plusによる定型処理をbatファイルで管理できます。