CREATE SYNONYM office
FOR SEQ001;
我需要一些系统表/任何其他方式来提供SEQ001
是序列的信息。
简而言之,我需要一个查询,该查询只登记为同义词对象创建的同义词,而不登记其他对象。
应该是这样的:
SQL> create sequence seq001;
Sequence created.
SQL> create synonym syn_se for seq001;
Synonym created.
SQL> select s.synonym_name, o.object_name, o.object_type
2 from user_synonyms s join user_objects o on o.object_name = s.table_name;
SYNONYM_NAME OBJECT_NAME OBJECT_TYPE
--------------- --------------- -------------------
SYN_SE SEQ001 SEQUENCE
SQL>
现在,您可以对其应用不同的过滤器,例如where o.object_type = 'SEQUENCE'
,以仅查看与序列相关的同义词。
要列出引用其他同义词的所有同义词,请使用字典视图ALL_SYNONYMS
并检查同义词定义是否对应于其他同义词。
示例
第一个同义词引用一个序列,另外两个引用一个同义词。该查询显示了两个";嵌套的";同义词。
create sequence seq001;
create synonym syn001 for seq001;
create synonym syn002 for syn001;
create synonym syn003 for syn002;
select OWNER, SYNONYM_NAME
from all_synonyms
where (TABLE_OWNER, TABLE_NAME) in
(select OWNER, SYNONYM_NAME from all_synonyms)
;
OWNER SYNONYM_NAME
---------- ------------
OOO SYN002
OOO SYN003
视图ALL_SYNONYMS
显示用户有权访问的所有同义词。还有一个字典视图DBA_SYNONYMS
显示了所有现有同义词,但您需要额外的权限才能访问它。