2010-07-23 46 views
3

如何從Oracle 10G PL/SQL函數和過程中查找所有表引用?如何從Oracle 10G PL/SQL函數和過程中找到所有表引用?

我可以肯定地執行下面的SQL語句:

select * from dba_source where text like '%tbl_c%' 

但我不知道如何查找調用指用於表函數的所有功能。例如,我可以有一個函數A調用使用表tbl_c的函數B.如果我執行前面提到的SQL,我會發現funciton B,但是接下來我必須執行另一個SQL來查找A.如你所知,圈複雜度可能達到3,4,5或更高。

非常感謝您的解釋。

回答

3

dba_dependencies從哪裏開始。例如:

SELECT  owner 
      || '.' 
      || NAME 
      || ' (' 
      || DECODE (TYPE, 
         'MATERIALIZED VIEW', 'MV', 
         'DIMENSION', 'DIM', 
         'EVALUATION CONTXT', 'EVALCTXT', 
         'PACKAGE BODY', 'PKGBDY', 
         'CUBE.DIMENSION', 'CUBE.DIM', 
         TYPE 
         ) 
      || ')' objdep, 
       referenced_name 
      || ' (' 
      || DECODE (referenced_type, 
         'EVALUATION CONTXT', 'EVALCTXT', 
         'NON-EXISTENT CONTXT', 'NO-EXIST', 
         'PACKAGE BODY', 'PKGBDY', 
         'CUBE.DIMENSION', 'CUBE.DIM', 
         referenced_type 
         ) 
      || ')' refr 
     FROM dba_dependencies 
     WHERE owner = :usn 
    ORDER BY objdep; 
1

當查找對象引用而不是ALL_SOURCE時,我傾向於使用ALL_DEPENDENCIES。添加到分層查詢中,您可以獲得所需的任何內容。