all_identifiers table 中未出现同义词
Synonym not appearing in all_identifiers table
美好的一天,
我遇到了一个奇怪的问题,PLSQL 包的 public 同义词没有出现在 all_identifiers table.
中
我编译了包头和包体,为它创建了 public 同义词。
如果我检查 all_objects table,我可以看到包的包对象和同义词对象。但是如果我检查 all_identifiers table,则没有条目。
all_identifierstable什么时候更新?我会假设 object/synonym 编译。
我可以强制 table 更新吗?
感谢您的帮助。
长话短说:
alter session set plscope_settings='IDENTIFIERS:ALL';
继续阅读 Using PL/Scope。
Demo: 什么都没有(在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>
哒哒哒!
美好的一天,
我遇到了一个奇怪的问题,PLSQL 包的 public 同义词没有出现在 all_identifiers table.
中我编译了包头和包体,为它创建了 public 同义词。
如果我检查 all_objects table,我可以看到包的包对象和同义词对象。但是如果我检查 all_identifiers table,则没有条目。
all_identifierstable什么时候更新?我会假设 object/synonym 编译。
我可以强制 table 更新吗?
感谢您的帮助。
长话短说:
alter session set plscope_settings='IDENTIFIERS:ALL';
继续阅读 Using PL/Scope。
Demo: 什么都没有(在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>
哒哒哒!