Comment faire pour capturer une SQLPlus code de sortie à l'intérieur d'un script shell?
J'ai un KornShell (ksh) script que les connexions à SQL*Plus et l'exécution d'un script. Dans le script shell, je voudrais saisir le code d'état de l'instruction SQL a été exécutée. Actuellement, il y a une erreur SQL et je suis incapable de le capturer en vérifiant $?.
Comment j'ai fait une capture de la réussite ou de code d'erreur de la requête sql et de la passer au script shell.
Extrait de script 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
Script 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
/
OriginalL'auteur AieshaDot | 2009-09-09
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé d'utiliser
dans votre script sql? (voir aussi ce lien)
J'ai peut-être tort, mais cela ne fonctionne pas pour les erreurs de connexion ou d'autres erreurs qui pourraient empêcher sqlplus de l'exécution du code sql. Je travaille en ce moment, et la meilleure solution que j'ai trouvé est à grep -c "ERREUR" ${LOG_FILE} >/dev/NULL le fichier journal nous sommes à la tuyauterie de la sqlplus sortie de la chaîne d'ERREUR et que de vérifier le code de retour. Est-il une meilleure solution?
que le lien ne fonctionne plus
Merci pour remarquer, j'ai changé le lien pour pointer vers un site web des archives la copie.
erreur de connexion s'affiche à cause sqlplus à la sortie avec errorlevel 1 déjà
OriginalL'auteur ChristopheD
Quitter le fichier sql avec
le capturer dans leur coquille avec $?
OriginalL'auteur apllom