我有一个Korn
Shell(ksh)脚本,它登录到sql * Plus并执行脚本.在shell脚本中,我想捕获已执行的sql语句的状态代码.目前sql存在错误,我无法通过检查$?来捕获它.
我如何从sql语句中捕获成功或错误代码并将其传递给shell脚本.
我如何从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
- -- 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
- /