我正在尝试捕获操作系统错误消息,就像我们捕获 SQL 错误消息一样。
此错误的示例可能是 SP2-0310:无法打开文件:“文件名”。
我通常只使用变量 SQLCODE 和 SQLERRM 来执行此操作,但是有没有办法为操作系统执行此操作?
SQL*Plus 客户端将预处理您的脚本并将其拆分为语句,并且将:
ORA-
错误由数据库生成,可以使用 BEGIN ... EXCEPTION WHEN error_type THEN ... END;
在 PL/SQL 中处理
SP2-
错误是由 SQL*Plus 客户端在将任何内容发送到数据库之前生成的。在这种情况下,您要求 SQL*Plus 客户端打开文件 fs\fds.sql
,但该文件不存在。如果您希望 SQL*Plus 客户端在发生操作系统错误时执行某些操作,您可以在尝试调用不存在的脚本之前使用
命令,然后客户端将处理您在该命令中定义的处理程序.
WHENEVER OSERROR EXIT
@fs\fds.sql
WHENEVER OSERROR CONTINUE
@path\to\other.sql
注意:这是针对 SQL*Plus 客户端应用程序(以及支持相同语法的其他客户端应用程序)的命令,不是在数据库上处理的命令,对于不支持 SQL* 的客户端应用程序没有意义加上语法。