如何在 Apex 应用程序中检测损坏的 PL/SQL?

How to detect broken PL/SQL in Apex Application?

我们有几个 Apex 19.2 应用程序。

在每个应用中,PL/SQL无处不在:应用进程、页面进程、条件、项目来源等

有时当我们更改数据库中的某些内容时,比方说重命名 table,我们希望确保没有任何 PL/SQL 代码在任何应用程序中被破坏。

目前,每当我们重命名对象时,我们都会使用以下查询在应用程序中搜索此对象,并确保代码片段正常工作(或使用工作区搜索功能):

    select * from apex_application_computations where application_id = 1200;
    select * from APEX_APPLICATION_PAGE_COMP where application_id = 1200;
    select * from APEX_APPLICATION_PAGE_PROC where application_id = 1200; 
    select * from APEX_APPLICATION_PAGE_VAL where application_id = 1200;
    select * from APEX_APPLICATION_PAGE_BRANCHES where application_id = 1200;
    select * from apex_application_page_items where application_id = 1200;
    select * from APEX_APPLICATION_PAGE_REGIONS where application_id = 1200;

此方法有效但有其局限性。例如,如果我们错过了另一个我们必须调查的 table,那么代码就会被破坏。

此方法的另一个限制是有时更改会产生更复杂的结果。比如我们重命名了一个table,同样的table本身并没有在任何应用程序中直接使用,而是被应用程序中使用的视图所使用。在这种情况下,此方法将不起作用,我们将以损坏的代码告终。

对于数据库对象,我们使用以下非常有效的查询:

SELECT object_type, object_name FROM user_objects WHERE status = 'INVALID'

所以我们想知道是否有适用于应用程序内部代码的等价物。

有谁知道我们如何在数据库发生变化后立即发现应用程序中的哪段代码被破坏?

@Doomi 给出了答案:“您的应用”--> 实用工具 --> Advisor 并检查 Valid/Invalid SQL 或 PL/SQL 代码

谢谢。