【问题标题】:Synonym not appearing in all_identifiers tableall_identifiers 表中未出现同义词
【发布时间】:2021-03-13 01:45:14
【问题描述】:

早安,

我遇到了一个奇怪的问题,即 PLSQL 包的公共同义词没有出现在 all_identifiers 表中。

我编译了包头和包体,为其创建了公共同义词。

如果我检查 all_objects 表,我可以看到包的包对象和包的同义词对象。但是如果我检查 all_identifiers 表,它没有条目。

  1. all_identifiers 表何时更新?我会假设对象/同义词编译。

  2. 我可以强制更新表格吗?

感谢您的帮助。

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    长话短说:

    alter session set plscope_settings='IDENTIFIERS:ALL';
    

    继续阅读Using PL/Scope


    演示:那里什么都没有(在ALL_IDENTIFIERS 中):

    SQL> create or replace package pkg_test as
      2    procedure p_test;
      3  end;
      4  /
    
    Package created.
    
    SQL> create or replace package body pkg_test as
      2    procedure p_test is begin null; end;
      3  end;
      4  /
    
    Package body created.
    
    SQL> create public synonym syn_pkg_test for pkg_test;
    
    Synonym created.
    
    SQL> select owner, name, type from all_identifiers where name like 'SYN%TEST';
    
    no rows selected
    
    SQL>
    

    让我们重新开始,但这次先改变会话:

    SQL> drop public synonym syn_pkg_test;
    
    Synonym dropped.
    
    SQL> alter session set plscope_settings='IDENTIFIERS:ALL';
    
    Session altered.
    
    SQL> create or replace package pkg_test as
      2    procedure p_test;
      3  end;
      4  /
    
    Package created.
    
    SQL> create or replace package body pkg_test as
      2    procedure p_test is begin null; end;
      3  end;
      4  /
    
    Package body created.
    
    SQL> create public synonym syn_pkg_test for pkg_test;
    
    Synonym created.
    
    SQL> select owner, name, type from all_identifiers where name like 'SYN%TEST';
    
    OWNER                          NAME                           TYPE
    ------------------------------ ------------------------------ ------------------
    PUBLIC                         SYN_PKG_TEST                   SYNONYM
    PUBLIC                         SYN_PKG_TEST                   SYNONYM
    
    SQL>
    

    哒哒哒!

    【讨论】:

    • 太棒了,做到了。不知道标识符范围,认为这一切都是自动处理的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多