繁体   English   中英

Bash脚本中的Oracle错误处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM