Database OracleDB インフラ

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

2017年10月6日

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/sh

variable=`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/sh

variable=`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)

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

関連記事

-Database, OracleDB, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.