[英]Oracle Error Handling in Bash Script
如何在SQLPlus中进行错误处理,在遇到错误时打印出自定义消息。 我把我的代码放在下面。
我的守则
#!/bin/bash
echo "My Scripts run below"
sqlplus -S UID1/UID2@DB1<< EOF
whenever sqlerror exit sql.sqlcode;
@/path/Script1
@/path/Script2
exit;
EOF
echo "My Scripts have run"
产量
My Scripts run below
SP2-0310: unable to open file "/path/Script1.sql"
SP2-0310: unable to open file "/path/Script2.sql"
My Scripts have run
要求的输出
My Scripts run below
**Below error in Script1**
SP2-0310: unable to open file "/path/Script1.sql"
**Below error in Script2**
SP2-0310: unable to open file "/path/Script2.sql"
My Scripts have run
实际上,SQLPlus返回代码总是0,根据我的经验,所以我建议你做我以前项目中必须做的事情:在文件中重定向脚本输出,然后解析它以找到指示SPx-xxxx或ORA-xxxx表达式错误。
WHENEVER SQLERROR
检测SQL命令或PL / SQL块中的错误。 您应该使用WHENEVER OSERROR
来捕获操作系统错误。
WHENEVER OSERROR EXIT FAILURE
如果怀疑返回了哪个错误代码,您可以考虑对数字进行硬编码:
WHENEVER OSERROR EXIT 1
为清楚起见,我将最后一次EXIT
更改为
EXIT SUCCESS
您将无法捕获script1和script2的两个错误。 在第一个错误之后,您的SQL * Plus脚本退出并将控制权移交给bash。
关于如何处理 bash中的退出代码,请参阅Bash中的错误处理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.