代码之家  ›  专栏  ›  技术社区  ›  Roman Kagan mianos

如何从oracle10gpl/SQL函数和过程中找到所有表引用[[副本]

  •  3
  • Roman Kagan mianos  · 技术社区  · 16 年前

    如何从oracle10gpl/SQL函数和过程中找到所有表引用?

    我绝对可以执行以下SQL语句:

    select * from dba_source where text like '%tbl_c%'
    

    但我想知道如何找到所有调用引用所用表的函数的函数。例如,我可以有一个调用函数B的函数a,该函数使用表tbl\u c。如果我执行前面提到的SQL,我将找到函数B,但是我必须执行另一个SQL来找到A。如你所知,圈复杂度可能是3,4,5级甚至更高。

    非常感谢您的解释。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Brian    16 年前

    dba\U依赖项 从哪里开始。例子:

     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
  •  1
  •   Andy Ali    11 年前

    我更喜欢用 ALL_DEPENDENCIES 在查找对象引用而不是所有源时。添加到分层查询中,您可以得到所需的任何内容。