Проблема с запросом SqlPlus (спецификация и тело пакета)

Я пытаюсь получить спецификацию и тело пакета из sqlplus, делая это.

select text from all_source
where name = 'PACK_JACK'
order by line;

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


person Jack    schedule 08.08.2011    source источник


Ответы (2)


В представлении all_source есть столбец TYPE. Тип может иметь 2 значения - 'PACKAGE' и 'PACKAGE BODY'. Итак, чтобы получить спецификацию,

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

и получить тело

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

Кроме того, вместо all_source вы можете использовать user_source. all_source включает все, включая системные пакеты. USER_SOURCE содержит только пользовательские пакеты.

person Basanth Roy    schedule 08.08.2011

Чтобы получить тело пакета, вы запускаете:

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

В отличие от:

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

Но, скорее всего, у вас нет права видеть тело пакета. Поэтому он скрыт от таблицы ALL_SOURCE.

person Codo    schedule 08.08.2011