如何查找存储过程中引用的表及其关联列

Posted

技术标签:

【中文标题】如何查找存储过程中引用的表及其关联列【英文标题】:How to find the tables and their associated columns referenced in a stored procedure 【发布时间】:2014-05-08 08:57:20 【问题描述】:

我想列出存储过程中引用的所有表及其关联列。

我如何在 oracle 中做到这一点?

提前致谢。

【问题讨论】:

不要认为您可以使用任何 oracle 视图获取列级别的依赖关系。您可以使用 *_dependencies 视图获取表级直接依赖关系。如果您需要获取列级别信息,则必须解析 *_source 视图 【参考方案1】:

您无法在 all_dependecies 视图中获取所有表依赖项。 如果在一个过程中使用动态 sql,则该表将不在 dba_dependecies 视图中。 所以在这种情况下,你可以在 dba_source 中看到表(如果表名不是函数的参数!)

【讨论】:

【参考方案2】:

您可以使用此查询获取引用的表

SELECT referenced_owner, 
       referenced_name, 
       referenced_type 
FROM   dba_dependencies 
WHERE  name = 'MYPROC' 
       AND owner = 'SCOTT' 
ORDER  BY referenced_owner, 
          referenced_name, 
          referenced_type; 

【讨论】:

以上是关于如何查找存储过程中引用的表及其关联列的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server存储过程里全库查找引用的数据库对象(表存储过程等)

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?

SQL SERVER里面如何在存储过程里面获取另一个存储过程所返回的表的数据?

SQL Server2008 存储过程传入表名称和列名称,如何在语句中使用表明引用列名?

使用1个存储过程中的表,该表仅在一周中的一天运行,作为对每天运行的另一个存储过程的引用

如何在 SQL Server 中查找使用“我的数据库”的存储过程