日々更新中です!

【Oracle】バッチファイルからSQLを実行する方法!

  • URLをコピーしました!
悩んでいる男の子

バッチからSQLを実行する方法が分からないんだよね。。

こんな悩みを解決します。

  • 本記事の内容
  • バッチファイルからSQLを実行する方法
  • 具体的なソースコード
  • 本記事の執筆者
プロフィール
いずみん(どこの写真だよ)
  • 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
  • 物販月利50万円⇒脱サラ
  • 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
  • 物販は彼女と楽しみながらやっています!

今回は、バッチからSQLを実行する方法を解説します

いずみん

すぐ読み終わるので、是非最後まで読んでみてください!

今回はOracle編なので、バッチからSQL*Plusを実行する流れになります。

目次

バッチからSQLを実行する流れ

Oracleの場合、SQLを実行する際に「SQL*Plus」を利用します。

SQL*Plusは、実行時にSQLファイルを引数として渡すことができます。

つまり、SQLファイルをバッチで作成し、作成したSQLファイルをSQL*Plusに渡してあげればよいということになります。

  1. バッチでSQLファイルを作成する
  2. 作成したSQLファイルをSQL*Plusに渡す
  3. SQL*Plusを実行する

SQLを実行するバッチのソースコード

以下がソースコードになります。

echo off

setlocal enabledelayedexpansion

rem -------------------------
rem 共通変数定義
rem ※環境に合わせる事
rem -------------------------
set APP_ROOT=%~dp0

rem -------------------------
rem ORACLE接続情報
rem ※環境に合わせる事
rem -------------------------
set ORA_USER_NAME=SAMPLE
set ORA_PASSWORD=SAMPLE
set ORA_IP_ADDR=127.0.0.1
set ORA_PORT_NUMBER=1521
set ORA_SERVICE_NAME=SAMPLE

rem -------------------------
rem 内部変数定義
rem -------------------------
set errcode=0
set msgtext=バッチ

rem -------------------------
rem バッチ処理開始ログコンソール出力
rem -------------------------
echo %msgtext%開始:%date% %time:~0,8%

rem -------------------------
rem sqlplus引数ファイル作成
rem -------------------------
set OUTPUT_FILENAME=%APP_ROOT%\sample.sql
type nul > %OUTPUT_FILENAME%

echo set echo off head off feed off recsep off >> %OUTPUT_FILENAME%
echo DELETE FROM T_SAMPLE; >> %OUTPUT_FILENAME%
echo exit >> %OUTPUT_FILENAME%

rem -------------------------
rem sqlplus開始
rem -------------------------
sqlplus %ORA_USER_NAME%/%ORA_PASSWORD%@%ORA_IP_ADDR%:%ORA_PORT_NUMBER%/%ORA_SERVICE_NAME% @%OUTPUT_FILENAME%

rem -------------------------
rem sqlplus引数ファイル削除
rem -------------------------
del %OUTPUT_FILENAME%

rem -------------------------
rem 実行結果取得
rem -------------------------
set errcode=%errorlevel%

rem -------------------------
rem バッチ処理終了ログコンソール出力
rem -------------------------
if %errcode% == 0 (
    echo %msgtext%正常終了:%date% %time:~0,8%
    exit %errcode%
) else (
    echo %msgtext%異常終了:%date% %time:~0,8%
    exit %errcode%
)

解説

echo set echo off head off feed off recsep off >> %OUTPUT_FILENAME%
echo DELETE FROM T_SAMPLE; >> %OUTPUT_FILENAME%
echo exit >> %OUTPUT_FILENAME%

38~40行目でSQLファイルの中身を作成します。

「>>」により、追記モードでファイルに文字列を出力しています。

40行目の「exit」は記載しないとSQL*Plusが終了しないので忘れないように!

sqlplus %ORA_USER_NAME%/%ORA_PASSWORD%@%ORA_IP_ADDR%:%ORA_PORT_NUMBER%/%ORA_SERVICE_NAME% @%OUTPUT_FILENAME%

45行目でSQL*Plusを実行します。

del %OUTPUT_FILENAME%

50行目でSQLファイルを削除します。

SQLファイルはSQL*Plusで使用するために一時的に作成しただけなので、処理終了後は削除します。

まとめ

今回は、バッチからSQLを実行する方法を解説しました。

分かってしまえば意外と簡単ですよね。

ではまた!

まとめ
  • バッチからSQLファイルを実行する方法として、バッチ内でSQLファイルを作成し、SQL*Plusに渡す方法がある。
  • 自由な生き方がしたいなら!

自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。

当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。

この記事が気に入ったら
いいね または フォローしてね!

シェアするんやで!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

いずみんのアバター いずみん 自由大好きおじ

自由大好きおじ | 物販月利50万達成⇨脱サラ | 物販(アパレルせどり)・アフィリエイト・プログラミング・投資に関する情報を発信中 | 元エンジニア | 保有資格約20個

コメント

コメントする

目次
閉じる