如何从 Oracle 10G PL/SQL 函数和过程中查找所有表引用? [复制]
Posted
技术标签:
【中文标题】如何从 Oracle 10G PL/SQL 函数和过程中查找所有表引用? [复制]【英文标题】:How to find all table references from Oracle 10G PL/SQL functions and procedures? [duplicate] 【发布时间】:2010-07-23 19:18:13 【问题描述】:如何从 Oracle 10G PL/SQL 函数和过程中查找所有表引用?
我绝对可以执行以下SQL语句:
select * from dba_source where text like '%tbl_c%'
但我想知道如何找到所有调用引用表的函数的函数。例如,我可以有一个函数 A 调用使用表 tbl_c 的函数 B。如果我执行上述 SQL,我会找到函数 B,但我必须执行另一个 SQL 才能找到 A。如您所知,圈复杂度可能是 3、4、5 级甚至更高。
非常感谢您的解释。
【问题讨论】:
【参考方案1】:dba_dependencies 是开始的地方。示例:
SELECT owner
|| '.'
|| NAME
|| ' ('
|| DECODE (TYPE,
'MATERIALIZED VIEW', 'MV',
'DIMENSION', 'DIM',
'EVALUATION CONTXT', 'EVALCTXT',
'PACKAGE BODY', 'PKGBDY',
'CUBE.DIMENSION', 'CUBE.DIM',
TYPE
)
|| ')' objdep,
referenced_name
|| ' ('
|| DECODE (referenced_type,
'EVALUATION CONTXT', 'EVALCTXT',
'NON-EXISTENT CONTXT', 'NO-EXIST',
'PACKAGE BODY', 'PKGBDY',
'CUBE.DIMENSION', 'CUBE.DIM',
referenced_type
)
|| ')' refr
FROM dba_dependencies
WHERE owner = :usn
ORDER BY objdep;
【讨论】:
【参考方案2】:在查找对象引用而不是 ALL_SOURCE 时,我更喜欢使用 ALL_DEPENDENCIES。添加到分层查询中,您可以获得所需的任何内容。
【讨论】:
以上是关于如何从 Oracle 10G PL/SQL 函数和过程中查找所有表引用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 java 中使用 jdbc 为 oracle 10g 执行 log miner PL/SQL 查询
如何一键提示两个命令? pl/sql oracle 10g 表单生成器