2010-06-22 25 views
4

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

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

我试图将这个功能实现到一个脚本中,它将派上用场。

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

回答

7

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

+2

除了使用动态SQL(EXECUTE IMMEDIATE/DBMS_SQL)。 – 2010-06-23 07:58:36

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'); 

希望这可以节省您的时间和挫折的时候。

相关问题