我需要一个查询来查找我的PLSQL DB中使用列" ID_SUB"的所有存储过程。
以防万一,有没有Toad选项可以做到这一点?
答案 0 :(得分:1)
尝试此查询:
select name,
line,
text
from ALL_SOURCE
where text like '%ID_SUB%'
答案 1 :(得分:0)
如果您有权从中选择,则所有过程代码都将在sys.all_source表中。这应该让你更近一点:
select distinct owner, name
from sys.all_source
where type = 'PROCEDURE'
and text like '%ID_SUB%';
答案 2 :(得分:0)
没有保证的方法,但您可以使用regexp_like
搜索user / all / dba_source来检查整个单词,并使用user / all / 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礼仪可以做到。)