通过Oracle查询可以找出存储过程使用哪些视图/同义词/表?
在PL / SQL Developer中,如果展开存储过程,它将显示“References”,其中显示了存储过程使用的所有表/视图/同义词。
我正在尝试将此功能实现到一个将派上用场的脚本中。
想知道是否有人知道一个脚本会获取存储过程使用的所有同义词/视图/表?
答案 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');
希望这可以节省您一些时间和挫折感。