相当于 SQLCODE 和 SQLERRM,但针对操作系统错误?

问题描述 投票:0回答:1

我正在尝试捕获操作系统错误消息,就像我们捕获 SQL 错误消息一样。

此错误的示例可能是 SP2-0310:无法打开文件:“文件名”。 enter image description here

我通常只使用变量 SQLCODE 和 SQLERRM 来执行此操作,但是有没有办法为操作系统执行此操作?

我已经尝试过仅使用 SQLERRM,但它没有抛出任何相关性: enter image description here

sql oracle plsql
1个回答
0
投票

SQL*Plus 客户端将预处理您的脚本并将其拆分为语句,并且将:

  • 在客户端处理SQL*Plus命令;或
  • 发送 SQL 和 PL/SQL 命令以供数据库进行评估。

ORA-
错误由数据库生成,可以使用
BEGIN ... EXCEPTION WHEN error_type THEN ... END;

在 PL/SQL 中处理

SP2-
错误是由 SQL*Plus 客户端在将任何内容发送到数据库之前生成的。在这种情况下,您要求 SQL*Plus 客户端打开文件 fs\fds.sql
,但该文件不存在。

如果您希望 SQL*Plus 客户端在发生操作系统错误时执行某些操作,您可以在尝试调用不存在的脚本之前使用

WHENEVER OSERROR

 命令
,然后客户端将处理您在该命令中定义的处理程序.

WHENEVER OSERROR EXIT @fs\fds.sql WHENEVER OSERROR CONTINUE @path\to\other.sql

注意:这是针对 SQL*Plus 客户端应用程序(以及支持相同语法的其他客户端应用程序)的命令,不是在数据库上处理的命令,对于不支持 SQL* 的客户端应用程序没有意义加上语法。

© www.soinside.com 2019 - 2024. All rights reserved.