Как показать код функции из пакета в ORACLE? - PullRequest
3 голосов
/ 06 сентября 2010

Как лучше всего показать функцию FUNCTION1 из пакета PACK?

DESC PACK.FUNCTION1 не работает

Ответы [ 3 ]

13 голосов
/ 06 сентября 2010

Что вы имеете в виду, говоря "показать"? Вы можете увидеть реализацию тела пакета следующим образом:

select text 
  from all_source a 
 where a.type = 'PACKAGE BODY' 
   and a.name = 'YOUR_PACKAGE' 
 order by line asc

хотя таким способом вы не можете извлечь только определенную функцию из пакета. Вы можете сделать то же самое с автономными функциями, установив a.type = 'FUNCTION'.

1 голос
/ 07 сентября 2010

Что ж, лучший способ, вероятно, использовать что-то вроде SQLDeveloper (или TOAD), у которого есть браузер схемы, подсветка синтаксиса и т. Д. ИЛИ извлечение источника в текстовые файлы, которые вы можете добавить в ваш любимый редактор.

Обе опции превосходят запросы и переформатирование источника в USER_SOURCE только для того, чтобы найти спецификацию функции.

Довольно плохо со стороны Oracle, так как DESC PACK.FUNCTION1 работал на Oracle 7, но они переключили его только на DESC PACK.

0 голосов
/ 06 сентября 2010

Может быть, функция FUNCTION1 существует в пакете PACK ?? Потому что это работает.

  SQL> desc dbms_output.put_line
   Parameter Type     Mode Default? 
   --------- -------- ---- -------- 
   A         VARCHAR2 IN            

SQL> desc dbms_random;

  Element    Type      
  ---------- --------- 
  SEED       PROCEDURE 
  VALUE      FUNCTION  
  NORMAL     FUNCTION  
  STRING     FUNCTION  
  INITIALIZE PROCEDURE 
  RANDOM     FUNCTION  
  TERMINATE  PROCEDURE 
  NUM_ARRAY  TYPE      

SQL> desc dbms_random.value

  Parameter Type   Mode Default? 
  --------- ------ ---- -------- 
  (RESULT)  NUMBER               
  (RESULT)  NUMBER               
  LOW       NUMBER IN            
  HIGH      NUMBER IN        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...