如何查找 Oracle 10G PL/SQL 函数和过程中的所有表引用?

发布于 2024-09-11 12:22:54 字数 303 浏览 4 评论 0原文

如何查找 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 级深,甚至更高。

预先非常感谢您的解释。

How to find all table references from Oracle 10G PL/SQL functions and procedures?

I definitely can execute the following SQL statement:

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

but I wonder how to find all functions that call functions that refer to table used. For example I can have a function A that calls function B that uses table tbl_c. If I'll execute aforementioned SQL I'll find funciton B but then I have to execute another SQL to find A. As you know the cyclomatic complexity could be 3,4,5 levels deep or even greater.

Greatly appreciate in advance for your explanation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深巷少女 2024-09-18 12:22:54

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;

dba_dependencies is where to start. Example:

 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;
猫腻 2024-09-18 12:22:54

我更愿意使用 ALL_DEPENDENCIES 当寻找对象引用而不是 ALL_SOURCE 时。添加到分层查询中,您可以获得所需的任何内容。

I'd prefer to use ALL_DEPENDENCIES when looking for object references rather than ALL_SOURCE. Adding to a hierarchical query, you could get what ever you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文