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

こんなことできます
U.M

■課題

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ファイルで管理できます。

お問い合わせはこちら

記事を書いた人

U.M

入社10年目のフレッシュマン(昭和)です。

関連記事

TOP