oracle如何列出特定存储过程中使用的所有表
Posted
技术标签:
【中文标题】oracle如何列出特定存储过程中使用的所有表【英文标题】:How to list all the tables used in a particular stored procedure in oracle 【发布时间】:2014-01-20 14:24:17 【问题描述】:我需要获取在 oracle 中特定存储过程中使用的所有表的列表。如何使用查询获取该列表?
【问题讨论】:
试试这个answer。 我不知道Oracle的具体情况,但是应该有一些方法可以在不实际执行的情况下检索SP的执行计划。这会告诉你你想知道什么(还有更多)。 @Lotharyx 存储过程本身没有执行计划,尽管它们包含的查询可能。 【参考方案1】:Dynamic SQL
s 被跳过,因为它们在编译期间没有在SEMANTIC
检查中得到验证
select
proc_syn.referenced_owner,
proc_syn.referenced_name,
proc_syn.referenced_type,
syn_tab.table_name
from
dba_dependencies proc_syn, dba_synonyms syn_tab, dba_tables tables
where
proc_syn.name= 'YOUR_PROC'
AND REFERENCED_TYPE in ( 'SYNONYM','TABLE')
AND proc_syn.referenced_name = syn_tab.synonym_name
AND syn_tab.synonym_name = tables.table_name
AND syn_tab.owner = 'PUBLIC'
order by
proc_syn.referenced_owner, syn_tab.table_name;
【讨论】:
添加 proc_syn.name= 'PROC_NAME'【参考方案2】:select
referenced_owner,
referenced_name,
referenced_type
from
dba_dependencies
where
name= 'PROC_NAME' AND REFERENCED_TYPE = 'TABLE'
order by
referenced_owner, referenced_name, referenced_type;
【讨论】:
您是否将 PROC_NAME 替换为您的过程名称?我已经尝试过了,它正在工作 是的,我用我的 sp 名称替换了它,但它没有给出结果 显示您的确切代码,并注意动态 sql 中引用的对象将不包括在内。以上是关于oracle如何列出特定存储过程中使用的所有表的主要内容,如果未能解决你的问题,请参考以下文章
我需要使用啥 SQL 来列出 Oracle 数据库上的所有存储过程?
如何创建可以返回特定实体以及所有实体的 Oracle 存储过程