2013-01-08 15 views
8

Mam funkcję przechowywaną w bazie danych Oracle pAdCampaign.fGetAlgoGroupKey. Jak wyświetlić kod tej funkcji.?Jak wyświetlić treść funkcji przechowywanej w języku PL/SQL w Oracle

+1

jest „pAdCampaign” schemat lub pakiet? – DazzaL

+0

pAdCampaign jest pakietem. –

+0

możliwy duplikat [.NET: Jak pobrać treść procedury lub funkcji Oracle 9i PL/SQL] (http://stackoverflow.com/questions/554115/net-how-to-retrieve-thebody-of -an-oracle-9i-pl-sql-procedure-or-function) – APC

Odpowiedz

21

Jeśli to pakiet następnie można pobrać źródła, które z:

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

Oracle nie przechowuje źródła podprogramu osobno, więc musisz przejrzeć źródło pakietu dla niego.

Uwaga: Mam Zakłada pan, że podczas tworzenia pakietu nie używać podwójnych cudzysłowów, ale jeśli nie, a następnie użyć

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

Dzięki Dazzal. Zadziałało. –

+0

Jeśli wybierzesz z ALL_SOURCE, powinieneś uwzględnić OWNER w klauzuli WHERE. – APC

+1

dla pokazania funkcji, "typ", którego powinieneś użyć to "FUNKCJA" – StampyCode

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

alternatywnie:

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

W przypadku pierwszej odpowiedzi na pytanie pojawia się błąd ORA-00904: "PROCEDURENAME": nieprawidłowy identyfikator. –

+0

@VallabhPatade: zobacz moją edycję. –

+0

Powraca null. Ale jestem pewien, że ta funkcja istnieje/istnieje. Wywołuję tę funkcję z kodu Java lub kodu SQL, który zwraca wartość zgodnie z oczekiwaniami. –

0

Można również użyć DBMS_METADATA:

select dbms_metadata.get_ddl('FUNCTION', 'FGETALGOGROUPKEY', 'PADCAMPAIGN') 
from dual