我有一个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 /