1

I have a ksh shell script that runs a .sql script with a background and wait statement. Is it possible for me to capture the generic "ORA-0" error and exit out completely?

So far:

$ORACLE_BASE/bin/sqlplus 2.sql &
pid2=$!
echo "Waiting for PID:$pid2"
wait $pid2
#look for error here
#exit program if oracle error
4

1 回答 1

2

SQL*Plus 本身就是一种 shell,因此它会从 oracle 捕获错误并继续执行。您想查看 SQL*Plus 命令WHENEVER SQLERROR,尤其是WHENEVER SQLERROR EXIT,它允许立即退出并显示错误代码。

因此,在 .sql 脚本的开头添加如下内容:

WHENEVER SQLERROR EXIT SQL.SQLCODE

如果出现 SQL 错误,它将以相关的错误代码退出。

现在,在之后的 shell 脚本中,wait您可以通过阅读$?.

类似的东西(取决于你的 shell 的确切语法):

wait $pid2
ret=$?
if [ $ret != 0 ]  # if not success
then
    exit $ret     # propagate error code
fi
于 2013-08-23T22:01:59.407 回答