是否有可能在 ORACLE 中捕获语法错误

Is it possible to catch syntax errors in ORACLE

我想问一下是否可以捕获异常块上的语法错误?示例我的代码中有以下异常,当它遇到异常时它会通过电子邮件通知我。我知道语法错误是在编译过程中,所以它不会执行异常块,但是有可能捕获它吗?

EXCEPTION
WHEN OTHERS
THEN
SEND EMAIL

如果有语法错误,程序将无法编译。 为了捕获异常,应该编译过程,如果有错误,则必须修复它们。 但是,您可以创建一个 运行 您的过程( 作为字符串,动态 )的过程,如果您的第二个过程包含错误,甚至是语法错误,您可以捕获它并插入它进入 table.

查看此 link 了解更多 info

您还可以通过其他方式编写一个程序,该程序可以检查无效对象并向您发送带有对象名称的邮件。 这里 sql 检查无效对象。

select * from all_objects where object_type in 
('PACKAGE','PACKAGE BODY', 'PROCEDURE','FUNCTION') and status ='INVALID'

对于语法错误,您需要使用 toad、pl/sql 开发人员、sql 开发人员等工具来显示错误。