调用SQL过程,如果错误
我想编写调用SQL过程(最终贯穿调度脚本)一个shell脚本,如果程序提供任何类型的SQL错误,发送错误作为我希望在脚本中指定的电子邮件。 我该怎么办?调用SQL过程,如果错误
编辑:这里是我的尝试。我无法弄清楚如何在发生错误时才发送电子邮件的逻辑。
export ORACLE_HOME=/oracle/app/products/11gr1/db
export ORACLE_SID=CTPP01S1
MAIL_TO="[email protected]"
LOGFILE=./xxx_job.log
exec 2>&1 > $LOGFILE
echo " Job run at: `date`......"
$ORACLE_HOME/bin/sqlplus -s '/ as sysdba' <<EOF
set head on;
set feed on;
set serveroutput on;
set linesize 250;
set pagesize 1000;
exec schema.proc_name;
exit
EOF
echo "Job ended at: `date`"
mailx -s "OLBB Extract Results." $MAIL_TO < $LOGFILE
如果你想从Oracle发送邮件,然后utl_mail是你的朋友。正如@Tony注意到你没有指定你的平台,但在Linux中有mail和Unix这两者都可以通过你的执行来输出。
你可以在包装,比如Python执行SQL任何环境(我有偏见),并从mail。
谢谢。但是我只想在发生错误时才发送电子邮件。我怎样才能做到这一点? – Victor
@Kaushik,你刚刚发布的代码;如果你的SQL过程中有一个异常,那么你可以使用utl_mail通过'exception when'发送邮件。如果你使用的是包装器,而不是让SQL抛出异常并将其捕获到外部。在bash中,'$?'是我认为的前一个执行行的返回码,把它放在'if .. fi'和'| if'邮件'如果需要的话...我个人会使用'utl_mail';这很容易。 [这](http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm)展示了如何处理甲骨文的错误。 – Ben
你尝试过什么和在哪个平台上,你运行shell脚本? – Tony
我正在UNIX上运行shell脚本。谢谢 – Victor