如何在shell脚本中捕获SQLPlus退出代码?

前端之家收集整理的这篇文章主要介绍了如何在shell脚本中捕获SQLPlus退出代码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Korn Shell(ksh)脚本,它登录sql * Plus并执行脚本.在shell脚本中,我想捕获已执行的sql语句的状态代码.目前sql存在错误,我无法通过检查$?来捕获它.
我如何从sql语句中捕获成功或错误代码并将其传递给shell脚本.

片段的ksh脚本:

sqlplus $JDBC_FBUID_U/$JDBC_FBPWD_U@$JDBC_FBDB @${FBC_HOME}/FBCS003.sql ${outputfile}
if [ $? != 0 ]
then
  msg_txt="The execution of sql script /tmp/FBCS003.sql Failed.  Please investigate."
  echo ${msg_txt}
  echo ${msg_txt} | mailx -r ${fromemail} -s "FBCB003: The execution of sql script /tmp/FBCS003.sql Failed." ${toemail}
  epage -n ${pagerdef} ${pagernum} "FBCB003: ${msg_txt}"
  exit 1
fi

sql脚本FBCS003.sql

-- Set sqlPlus variables.
SET NEWPAGE 0
SET WRAP OFF
SET LINESIZE 9999
SET ECHO OFF
SET FeedBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET PAGESIZE 0
SET COLSEP |
SET TRIMSPOOL ON
SET TIMING ON

-- Open output file
-- The file path and name are passed from the calling script FBCS003.
spool &1

-- Main Select Statement
select
ct.fiscal_yr_no,ct.acct_per_no,ct.bus_unit_id,ct.btch_file_seq_no,ct.comm_tran_srce_cd,ct.rec_no,ct.rev_gl_acct_no,ct.gl_prod_cd,ct.prod_desc,ct.paid_ir_no,ct.srce_ir_no,ct.ir_no_house_acct_rsn_txt,ct.vndr_acct_ty_id,ct.clnt_na,ct.issr_na,ct.trd_da,ct.setl_da,ct.ord_ty_cd,ct.actv_ty_cd,ct.prin_amt,ct.grs_comm_amt,ct.net_comm_amt,ct.vndr_prod_ty_cd,ct.vndr_stmt_id
from fin.comm_tran ct
where ct.bus_unit_id = 'EJL'
and ct.vndr_acct_ty_id in
('11111111','222222222')
-- Execute sql statement.
/

-- Close output file
spool off

-- Exit sql
exit
/
你尝试过使用过吗?
whenever sqlerror exit sql.sqlcode

在你的sql脚本中? (另见this link)

猜你在找的Bash相关文章