2

我有一个存储过程,它有一个 OUT 参数,指示错误代码。如果错误代码不是 0,那么我会报错

DECLARE
BEGIN
 foo (err_code);

 IF (err_code <> 0) THEN
   raise_application_error(...);

END;

到目前为止一切顺利,但这是我的问题。

这段代码(如上所示)由 sqlplus 执行,它从 shell 脚本中调用,它应该以 0 / not 0 退出(作为 sql 脚本)。

#shell script

sqlplus ... @myscript
return $?

当 raise_application_error 执行时,控制权返回给 sqlplus。

sql>

我想要的是一种退出到 shell 的方法,而 sqlplus 在 $ 上没有返回 0?

有什么想法吗?提前致谢。

4

2 回答 2

7

当 SQLERROR 退出 1

于 2010-02-12T20:52:13.443 回答
0

如果您关心您的 PL/SQL 引发了哪个应用程序错误,您可以将返回代码声明为 SQL*Plus 变量,并返回让 PL/SQL 过程设置它。

#shell script

sqlplus /nolog << EOF
connect uid/pw
variable retval number;
BEGIN
  foo (:retval);
END;
/

exit retval;
EOF

return $?
于 2010-02-14T04:41:38.577 回答