【发布时间】:2015-01-03 05:47:42
【问题描述】:
我实际上是使用下面的代码从 Unix 调用 SQL 脚本。 SQL 脚本有数百万个将在我的数据库上运行的 DML。要求是,如果 DML 失败,则脚本应该使用退出代码中止,而不是跳到下一个 DML。目前,它正在执行所有 DML,而不会在失败的 DML 处中断。我们实际上需要对脚本进行更多控制。我们怎样才能做到这一点?请帮忙。
脚本正文
#! /bin/sh
echo "Script started at `date`"
#************** Execute the extract sql on Staging database***************#
`sqlplus -s $CCBSTGID/$CCBSTGPASSWRD@$CCBSTGDBASE <<EOF
whenever sqlerror exit 2;
whenever error exit 3;
set termout on
set echo on
set serveroutput on
set pagesize 0
set linesize 500
set heading off
set verify on
set feedback on
spool output1.txt;
@DMLFile.sql
spool off;
quit;
EOF`
RC=$?
echo $RC
if [ ${RC} != 0 ]
then
echo "Script execution failed"
exit 1
fi
【问题讨论】:
-
您是否真的打算用反引号包围
sqlplus <EOF ... EOF块,或者您只是不确定 S.O.格式化?如前所述,反引号没有任何价值。 -
您能解释一下@DMLFile.sql 里面的内容吗?事物的结构如何?