PL / SQL中的“使用”查询?

时间:2018-11-02 03:31:29

标签: sql oracle

例如,在查看this manual中的表时,可以使用“使用者”功能向您显示该表的使用位置(因此,如果在触发器中引用了表,将在此处显示) 。

如何在Toad之外的普通旧SQL中执行此操作?

我对查找使用序列和表格的地方特别感兴趣。

我已经查看了USER_TABLES,USER_TRIGGERS和USER_SEQUENCES的文档,但显然除了从元表中选择一些列外,还需要更多的东西。

1 个答案:

答案 0 :(得分:5)

您可以使用user_dependenciesall_dependencies

SELECT name AS dependant_object,
       type,
       owner object_owner 
FROM all_dependencies
 WHERE referenced_owner = user --Table owned by current user
 AND referenced_type = 'TABLE' AND referenced_name = 'EMPLOYEES';

对于序列,您可以使用referenced_type = 'SEQUENCE'

另一种选择是扫描软件包/功能/过程和触发器的源代码。

SELECT *
  FROM user_source
 WHERE lower(text) like '%employees%';  --table name


SELECT *
  FROM user_source
 WHERE lower(text) like '%emp_seq.nextval%'; --sequence name

但是,由于employees_tmp形式的表也将匹配,或者emp_seq . nextval将不匹配,因此这并不完全可靠。