【问题标题】:How to find all table references from Oracle 10G PL/SQL functions and procedures? [duplicate]如何从 Oracle 10G PL/SQL 函数和过程中查找所有表引用? [复制]
【发布时间】: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 级甚至更高。

非常感谢您的解释。

【问题讨论】:

    标签: sql oracle plsql oracle10g complexity-theory


    【解决方案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。添加到分层查询中,您可以获得所需的任何内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-16
        • 2016-09-28
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 2016-08-03
        • 2018-10-23
        相关资源
        最近更新 更多