문제

SQL*Plus에 로그인하고 스크립트를 실행하는 KornShell (KSH) 스크립트가 있습니다. 쉘 스크립트 내에서 실행 된 SQL 문의 상태 코드를 캡처하고 싶습니다. 현재 SQL에는 오류가 있으며 $?를 확인하여 캡처 할 수 없습니다. SQL 문에서 성공 또는 오류 코드를 캡처하여 쉘 스크립트로 전달하는 방법.

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.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 스크립트에서? (또한 참조하십시오 이 링크)

다른 팁

SQL 파일에서 종료하십시오

exit sql.sqlcode;

$로 쉘로 캡처합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top