シェルスクリプトでSQL発行

基本中の基本だが、シェルスクリプトからsqlplus経由でSQLを発行する関数を書いたのでメモしておく。

####################
# 引数で渡されたSQLを発行し、結果を RESULT_SET 変数に格納します。
# [引数]
# ・発行するSQL
# [前提]
# 下記の通り変数が設定されていること。
# ・ORACLE_USER_ID: OracleのユーザID
# ・ORACLE_USER_PWD: 上記ユーザのパスワード
####################
execQuery() {
  # 引数で指定されたSQLを発行し、結果を変数 RESULT_SET に格納
  RESULT_SET="`sqlplus -S -L "${ORACLE_USER_ID}/${ORACLE_USER_PWD}" << EOF
    set heading off
    set echo off
    set pagesize 0
    set trimspool on
    ${1};
    quit
  EOF`"
  # 終了ステータスの設定
  [ -z "`echo "$RESULT_SET" | grep "ORA-[0-9]*:"`" ]
}