2013-01-08 20 views
8

我在Oracle數據庫pAdCampaign.fGetAlgoGroupKey中存儲了一個函數。 如何查看該函數的代碼。如何在Oracle中查看PL/SQL存儲函數體

+1

是「pAdCampaign」模式或一個包? – DazzaL

+0

pAdCampaign是軟件包。 –

+0

[.NET:如何檢索Oracle 9i PL/SQL過程或函數的主體]的可能重複(http://stackoverflow.com/questions/554115/net-how-to-retrieve-the-body-of -an-oracle-9i-pl-sql-procedure-or-function) – APC

回答

21

如果是一個包,那麼你可以得到的來源與:

select text from all_source where name = 'PADCAMPAIGN' 
and type = 'PACKAGE BODY' 
order by line; 

Oracle不存儲源代碼一個子程序分開,所以你需要查看它的包源代碼。

注:我認爲創建包時沒有使用雙引號,但如果你沒有,那麼使用

select text from all_source where name = "pAdCampaign' 
and type = 'PACKAGE BODY' 
order by line; 
+0

感謝Dazzal。有效。 –

+0

如果您從ALL_SOURCE中進行選擇,您應該在WHERE子句中包含OWNER。 – APC

+1

用於顯示一個函數,你應該使用的'type'是'FUNCTION' – StampyCode

5
SELECT text 
FROM all_source 
where name = 'FGETALGOGROUPKEY' 
order by line 

或者:

select dbms_metadata.get_ddl('FUNCTION', 'FGETALGOGROUPKEY') 
from dual; 
+0

ORA-00904:「PROCEDURENAME」:無效的標識符。 –

+0

@VallabhPatade:看我的編輯。 –

+0

它返回null。但我相信這個功能是存在的。我從Java代碼或SQL代碼調用這個函數,它會按照預期返回值。 –

0

您還可以使用DBMS_METADATA:

select dbms_metadata.get_ddl('FUNCTION', 'FGETALGOGROUPKEY', 'PADCAMPAIGN') 
from dual 
相關問題