2013-01-08 19 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 
相关问题