2009-12-11 12 views

Odpowiedz

7
select 
    text 
from 
    user_source 
where 
    type = 'PROCEDURE' 
and 
    name='YOURPROCEDURENAME' 
order by 
    line; 
+0

Podobnie type = 'FUNCTION' i name = 'YOURFUNCTIONNAME'. – dacracot

+0

Mamy kilka różnych ustawień schematu. Czy muszę zrobić coś wyjątkowego, aby sobie z nimi poradzić? –

+0

Można zalogować się do określonego schematu, a źródło_użytkownika będzie zawierać tylko źródło tego schematu. Możesz też zalogować się jako DBA, a tabela dba_source będzie zawierała kolumnę właściciela, którą możesz dołączyć do klauzuli where, aby określić, który schemat Cię interesuje. – dacracot

5

Zastosowanie:

SELECT us.name, 
     us.type, 
     us.text 
    FROM USER_SOURCE us 
WHERE us.type IN ('PROCEDURE', 'FUNCTION') 
ORDER BY name, line 
3

Innym rozwiązaniem jest użycie dbms_metadata API

set line 200 
set long 10000 
select dbms_metadata.ddl('PACKAGE','Package Name') from dual; 

można użyć tego dla wszystkich metadanych tym tabel, indeksów i ograniczeń.

+0

Awans, ponieważ te "ustawione linie/set long" będą potrzebne również dla innych mechanizmów. – monojohnny

+0

@monojohnny, 'set long' nie jest potrzebny dla * innych mechanizmów *. Nadal +1, ponieważ dbms_metadata * jest * do zrobienia, imho. –

Powiązane problemy