2014-01-20 91 views
2

我需要獲取oracle中特定存儲過程中使用的所有表格的列表。如何使用查詢獲取該列表?如何列出oracle中特定存儲過程中使用的所有表格

+1

在驗證試試這個[答案](http://stackoverflow.com/a/122817/2970947)。 –

+0

我不知道Oracle的具體情況,但應該有一些方法可以在沒有實際執行的情況下檢索SP的執行計劃。這會告訴你你想知道什麼(還有更多)。 –

+0

@Lotharyx存儲過程本身沒有執行計劃,雖然它們包含的查詢可能。 –

回答

0
select 
    referenced_owner, 
    referenced_name, 
    referenced_type 
from 
    dba_dependencies 
where 
    name= 'PROC_NAME' AND REFERENCED_TYPE = 'TABLE' 
order by 
    referenced_owner, referenced_name, referenced_type; 
+0

我試過了,但是它返回的是空記錄 – suresh

+0

你用程序名替換了PROC_NAME嗎?我已經嘗試過,它的工作 – hkutluay

+0

是的,我用我的sp名替換它,但它沒有給出結果 – suresh

3

Dynamic SQL s爲跳過,因爲他們沒有在SEMANTIC檢查彙編

select 
    proc_syn.referenced_owner, 
    proc_syn.referenced_name, 
    proc_syn.referenced_type, 
    syn_tab.table_name 
from 
    dba_dependencies proc_syn, dba_synonyms syn_tab, dba_tables tables 
where 
    proc_syn.name= 'YOUR_PROC' 
    AND REFERENCED_TYPE in ('SYNONYM','TABLE') 
    AND proc_syn.referenced_name = syn_tab.synonym_name 
    AND syn_tab.synonym_name = tables.table_name 
    AND syn_tab.owner = 'PUBLIC' 
order by 
    proc_syn.referenced_owner, syn_tab.table_name; 
+0

它的工作,但如何從特定程序表 – suresh

+1

add proc_syn.name ='PROC_NAME' – hkutluay

+0

@hkutluay是的,你是對的!編輯答案添加它。 –

相關問題