oracleサンプルプログラム

Oracle ヒアドキュメントでSQL*Plus実行

SQL*Plusで実行したSQLの結果をそのままSQL*Plusの終了コードとして(シェルでは $? で)取得する事ができます。実務ではバッチ処理をストアドプロシージャで書いて、プロシージャの終了ステータスをシェルへ戻す場合に使っています。ポイントは、プロシージャ内で定義した変数値を、SQL*Plusを抜ける時に利用するexitコマンドに設定する事です。(注意点としてこちらは数字のみ指定可能です)

#!/bin/bash
DB_USER=sooni
DB_PASS=sooni
DB_HOST=vm013
DB_PORT=1521
DB_SERVICE_NAME=orau8

sqlplus -s ${DB_USER}/${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_SERVICE_NAME} <<EOF
set feedback off
set serveroutput on
var rsts NUMBER;

declare
begin
select 10 into :rsts from dual;
dbms_output.put_line('rsts:'||:rsts );
end;
/
exit :rsts;
EOF

res=$?
echo "返却値:${res}"
exit ${res}

以下は上記内容を test01.shに保存して実行した結果です。

vi test01.sh
[dabada@vm013 ~]$ ./test01.sh
[dabada@vm013 ~]$ chmod 777 ./test01.sh
rsts:10
返却値:10
[dabada@vm013 ~]$ echo $?
10
[dabada@vm013 ~]$

以前SQLファイルを使ったサンプルを投稿していました。こちらも参考になればどうぞ。

スポンサーリンク
コピペで使う