【问题标题】:How to find out what tables/views/synonyms are used in a stored procedure如何找出存储过程中使用了哪些表/视图/同义词
【发布时间】:2011-03-06 15:51:17
【问题描述】:

是否可以通过 Oracle 查询找出存储过程使用的视图/同义词/表?

在 PL/SQL Developer 中,如果您折叠存储过程,它将显示“引用”,其中显示了存储过程使用的所有表/视图/同义词。

我正在尝试将此功能实现到一个可以派上用场的脚本中。

想知道是否有人知道可以获取存储过程使用的所有同义词/视图/表的脚本?

【问题讨论】:

    标签: oracle stored-procedures plsql dependencies


    【解决方案1】:

    您要查找的信息位于 user_dependencies/all_dependencies 视图中。

    【讨论】:

    • 使用动态 SQL (EXECUTE IMMEDIATE / DBMS_SQL) 的地方除外。
    【解决方案2】:

    @Rene 的答案是正确的,但我认为它需要额外的解释。从all_dependencies 中选择时,您可能会运行如下查询,它应该为您提供所有引用您的 SP 的对象。

    SELECT *
    FROM all_dependencies
    WHERE "REFERENCED_NAME" = 'vcustomeraddresses';
    

    当它空手而归时,您可能会感到惊讶。
    这是因为 oracle 区分大小写。这意味着您拥有to ether disable case sensitivity(如果您使用的oracle 版本高于10g r2)

    ALTER SESSION SET NLS_COMP=LINGUISTIC;
    ALTER SESSION SET NLS_SORT=BINARY_CI;
    

    upper双方比较时

    SELECT *
    FROM all_dependencies
    WHERE upper("REFERENCED_NAME") = upper('vcustomeraddresses');
    

    希望这可以为您节省一些时间和挫败感。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 2011-08-20
      相关资源
      最近更新 更多