2016-09-30 23 views
0

我需要一个查询来查找我的PLSQL DB中使用列“ID_SUB”的所有存储过程。如何查找在PL SQL中使用列的所有存储过程?

为了以防万一,有没有任何Toad选项可以做到这一点?

+2

的可能的复制[如何在Oracle 11g中使用列名,找到存储过程的名称] (http://stackoverflow.com/questions/5432948/how-to-find-name-of-the-stored-procedure-using-column-name-in-oracle-11g) –

回答

0

尝试此查询:

select name, 
     line, 
     text 
    from ALL_SOURCE 
    where text like '%ID_SUB%' 
+0

Works!谢谢!! ;) – pacio14

0

所有的程序代码将在sys.all_source表,如果您有权从中进行选择。这应该让你靠近一点:

select distinct owner, name 
from sys.all_source 
where type = 'PROCEDURE' 
and text like '%ID_SUB%'; 
0

没有保证的方式,但可以使用regexp_like检查整个单词搜索用户/所有/ dba_source,和交叉引用与用户/所有/ dba_dependencies到缩小要检查的包列表。

select s.name, s.type, s.line, s.text 
from user_source s 
where ltrim(s.text,chr(9)||' ') not like '--%' 
and regexp_like(lower(s.text),'\Wyour_column_name_here\W') 
and (s.name, s.type) in 
     (select d.name, d.type 
     from user_dependencies d 
     where d.referenced_owner = user 
     and d.referenced_name = 'YOUR_TABLE_NAME_HERE'); 

,或者有可能是从其他模式对它的引用,

select s.owner, s.name, s.type, s.line, s.text 
from all_source s 
where ltrim(s.text,chr(9)||' ') not like '--%' 
and regexp_like(lower(s.text),'\Wyour_column_name_here\W') 
and (s.owner, s.name, s.type) in 
     (select d.owner, d.name, d.type 
     from all_dependencies d 
     where d.referenced_owner = user 
     and d.referenced_name = 'YOUR_TABLE_NAME_HERE'); 

你可能会使它只需使用select distinct s.owner, s.name, s.type ...获得对象进行调查的名单。

(重复我的回答How to find name of the stored procedure using Column name in Oracle 11g我意识到后职位是5岁。希望这是确定与SO礼仪。)