[Oracle]SQL*Plusで返ってきた結果をShellの変数に格納

SQL*PlusでSQLを実行結果をShellの変数に入れる方法。

意外と忘れるので自身のブログに乗せておこう。

目次

SQLの結果を変数に格納

サンプル

↓がサンプルです。

variable=`sqlplus -s / as sysdba << EOF
set head off;
select 列名 from 表名;
exit;
EOF
`

気を付けることは、インデントを揃えずに左詰にすることです。

では、これを使ってサンプルを書いてみましょう。

#!/bin/sh

variable=`sqlplus -s / as sysdba << EOF
set head off;
select sys_context('USERENV','MODULE') from dual;
exit;
EOF
`
echo ${variable}

exit 0

実行ログ

↓が実行ログ。

$ cat ./get_sqlresult.sh
#!/bin/shvariable=`sqlplus -s / as sysdba << EOF
set head off;
select sys_context('USERENV','MODULE') from dual;
exit;
EOF
`
echo ${variable}
exit 0

$ ./get_sqlresult.sh
sqlplus@it-tnga-ap.jp.oracle.com (TNS V1-V3)

確かに結果を取得できています。 インデントをきれいにすると↓みたいにwarningが出力される。

$ cat get_sqlresult.sh
#!/bin/shvariable=`sqlplus -s / as sysdba << EOF
set head off;
select sys_context('USERENV','MODULE') from dual;
exit;
EOF`
echo ${variable}

exit 0

$ ./get_sqlresult.sh
./get_sqlresult.sh: line 11: warning: here-document at line 7 delimited by end-of-file (wanted `EOF')
sqlplus@it-tnga-ap.jp.oracle.com (TNS V1-V3)

でも結果はしっかり出力される。

よかったらシェアしてね!
  • URLをコピーしました!
目次