如何找出存储过程中使用的表/视图/同义词

时间:2010-06-22 06:08:47

标签: oracle stored-procedures plsql dependencies

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

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

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

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

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

当它空手而归时,你可能会感到惊讶 这是因为oracle是CASE SENSITIVE。这意味着你有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');

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