通过Oracle查询可以找出存储过程使用哪些视图/同义词/表?如何找出存储过程中使用的表/视图/同义词
在PL/SQL Developer中,如果您折叠存储过程,它将显示“References”,其中显示存储过程使用的所有表/视图/同义词。
我试图将这个功能实现到一个脚本中,它将派上用场。
想知道是否有人知道一个脚本,将获取存储过程使用的所有同义词/视图/表?
通过Oracle查询可以找出存储过程使用哪些视图/同义词/表?如何找出存储过程中使用的表/视图/同义词
在PL/SQL Developer中,如果您折叠存储过程,它将显示“References”,其中显示存储过程使用的所有表/视图/同义词。
我试图将这个功能实现到一个脚本中,它将派上用场。
想知道是否有人知道一个脚本,将获取存储过程使用的所有同义词/视图/表?
您正在查找的信息位于user_dependencies/all_dependencies视图中。
@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');
希望这可以节省您的时间和挫折的时候。
除了使用动态SQL(EXECUTE IMMEDIATE/DBMS_SQL)。 – 2010-06-23 07:58:36