コーディングメモ

忘れっぽい自分に

【Oracle】PL/SQL ファンクションを実行してリターンコードを返すwindowsバッチファイル

@echo off

set ORACLEUSR=oracle-userid/oracle-pass@oraclesid
set fname=sqlfile-path

sqlplus %ORACLEUSR% @%fname%

echo %errorlevel%

pause
  • ファンクションを実行するSQLファイル
variable num number;
variable p_file  varchar2(300);

execute  :p_file  :=  'test.tmp';

execute  :num  :=  FUNCTION_NAME(:p_file);

exit :num

1. Windowsバッチファイルの説明

1. SQLファイルを指定してSQLPLUSの呼び出し

sqlplus.exeの引数として、接続文字列と実行するSQLファイルを指定できます。 sqlplus %ORACLEUSR% @%fname%として実行できます。

2. ファンクションを実行するsqlファイルの説明

1. 変数の定義

variable <変数名> <データ型>で変数を定義します。 variable num number;で、numという変数名でnumber型の変数を定義しています。 使用可能なデータ型はPL/SQLで使用可能なデータ型と同じです。

2. 変数へ値を代入

executeコマンドでPL/SQLを実行します。 execute :p_file := 'test.tmp';で、p_fileという変数に test.tmp という文字列を代入しています。

3. ファンクションを実行してリターンコードを取得する。

同じくexecuteコマンドを使用します。 execute :num := FUNCTION_NAME(:p_file);で、ファンクション「FUNCTION_NAME」のリターンコードを 変数 num にセットしています。

4. リターンコードをwindowsバッチファイルに返却

exitコマンドを使用します。 exit <リターンコード>で、指定したリターンコードがwindowsバッチファイルへ返却されます。 これを、windowsバッチファイル側の「%errorlevel%」環境変数で取得します。