powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как "распарсить" пакет?
49 сообщений из 49, показаны все 2 страниц
Как "распарсить" пакет?
    #32953158
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема философская

Есть пакет в БД. Можно получить список функций/процедур из пакета и входные и выходные параметры - с этим проблем не возникло.
Хочется получить содержимое тела функции/процедуры, находящейся в пакете. Особо идеально было бы одним оператором select.

Как альтернатива - может есть какое нибудь инструментальное средство, позволяющее сделать сию операцию? С Oracle Designer такая штука не проходит в том виде как мне требуется.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953187
Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Q
Гость
Код: plaintext
1.
2.
3.
4.
5.
select text
 from dba_source
 where owner = '<Владелец>'
   and name = '<Имя>'
   and type like 'PACKAGE%'
 order by type, line   
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953199
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q
Код: plaintext
1.
2.
3.
4.
5.
select text
 from dba_source
 where owner = '<Владелец>'
   and name = '<Имя>'
   and type like 'PACKAGE%'
 order by type, line   


И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакет
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953258
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
select text 
  from dba_source
 where owner like 'SOME_OWNER'
   and TYPE  like 'PACKAGE_BODY'
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953268
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar
Код: plaintext
1.
2.
3.
4.
select text 
  from dba_source
 where owner like 'SOME_OWNER'
   and TYPE  like 'PACKAGE_BODY'


нет такого типа 'PACKAGE_BODY'
И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакет
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953277
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voytнет такого типа 'PACKAGE_BODY'
И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакетЗато есть "PACKAGE BODY". Его и увидите. А потом берёте текст тела пакета и парсите как вам заблагорассудится - вдоль и поперёк.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953289
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoytЯ ж текст функции FF из пакета PP желаю увидеть, а не весь пакет
Я б искал так
Код: plaintext
1.
2.
3.
4.
 and line >=
 (select line from dba_source where upper(text) like 'PROCEDURE PROC_NAME'
 and line <=
 (select line from dba_source where upper(text) like 'END PROC_NAME')     
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953296
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Воронцов Voytнет такого типа 'PACKAGE_BODY'
И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакетЗато есть "PACKAGE BODY". Его и увидите. А потом берёте текст тела пакета и парсите как вам заблагорассудится - вдоль и поперёк.

Собственно суть вопроса и состоит в том как его распарсить вдоль и поперек Условно говоря хотелось бы иметь select подобного вида

select
text
from
"чего-то"
where
owner='овнер' and
package_name='имя пакета' and
module_type='FUNCTION' and
module_name='имя функции в ентом пакете';

Сильно нужно
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953303
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voyt
нет такого типа 'PACKAGE_BODY'

Чуток ошибся
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953346
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar
Я б искал так
Код: plaintext
1.
2.
3.
4.
 and line >=
 (select line from dba_source where upper(text) like 'PROCEDURE PROC_NAME'
 and line <=
 (select line from dba_source where upper(text) like 'END PROC_NAME')     


Только моих разработчиков сложно заставить писать имя процедуры в одной строке со словом "PROCEDURE" - их вообще невозможно заставить что либо делать по какому то правилу.

Сия задача возникла из-за того, что группа не вмеру активных и творчески одухотворенных разрабочиков генерируют новые пакеты и изменяют старые со скоростью секретаря-референта. Причем документировать работу считают занятием постыдным и недостойным. В результате бедные тестеры приходя утром на работу начинают перетестировать систему заново. Как результат - все что работало вчера к 6 вечера - сегдоня к 9 утра работает не так или совсем не работает.

Вот и возникло желание помочь людям хоть как то Отзовитесь!!!
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953455
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voyt

Только моих разработчиков сложно заставить писать имя процедуры в одной строке со словом "PROCEDURE" - их вообще невозможно заставить что либо делать по какому то правилу.

Причем документировать работу считают занятием постыдным и недостойным.

Ого #$%

А заставить писать имя процедуры после end'a реально ?
Тогда можно будет выбрать номер строки с первым и следующим совпадением в тексте имени процедуры.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953461
HX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voytup
А что хочется получить?.. отпарсить и что вытащить?..
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953486
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HX Voytup
А что хочется получить?.. отпарсить и что вытащить?..

В двух словах - из пакета текст функции, зная имя владельца пакета, имя пакета и имя функции.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953494
HX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что предполагается делать дальше с текстом ф-ии?..
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953501
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar

Ого #$%

А заставить писать имя процедуры после end'a реально ?
Тогда можно будет выбрать номер строки с первым и следующим совпадением в тексте имени процедуры.

Вот и "ого" Нет, не реально заставить вообще, посему приходится выкручиваться "as is". Устроит вариант любой - временные характеристики для парсинга не важны - пусть хоть час выковыриывает Хотя за час может многое в системе измениться...
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953525
cheshire_cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VoytЕсть пакет в БД. Можно получить список функций/процедур из пакета и входные и выходные параметры - с этим проблем не возникло.


А как это сделать?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953535
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HXА что предполагается делать дальше с текстом ф-ии?..

Предполагается сравнить ее текст с ранее имеющимся и увидеть какие функции в пакете были модифицированы и как это отразится на функциях системы. В идеале - на графической модели. Чтоб тестер пришел утром и не мучал всю систему хаотично - а тестил только функции, потенциально опасные для общества
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953543
HX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voyt HXА что предполагается делать дальше с текстом ф-ии?..

Предполагается сравнить ее текст с ранее имеющимся и увидеть какие функции в пакете были модифицированы и как это отразится на функциях системы. В идеале - на графической модели. Чтоб тестер пришел утром и не мучал всю систему хаотично - а тестил только функции, потенциально опасные для общества
А дерево зависимостей этой задаче не поможет?.. user_dependencies?..
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953548
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cheshire_cat VoytЕсть пакет в БД. Можно получить список функций/процедур из пакета и входные и выходные параметры - с этим проблем не возникло.


А как это сделать?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
CREATE OR REPLACE VIEW V$ 99012  AS select
     t1.object_id,
	 t1.owner,
	 t1.package_name||decode(T1.package_name,null,null,'.')||T1.object_name as module_name,
     trim(T1.package_name) as package_name,
	 T1.object_name,
	 T1.argument_name,
	 (select 
	        DECODE(min(position), 0 ,'FUNCTION','PROCEDURE') 
	  from 
	        all_arguments 
	  where 
	        owner in (select username from v$ 99010 ) AND 
			object_id=T1.object_id AND
	        object_name=T1.object_name and
		    nvl(overload, 0 )=nvl(T1.overload, 0 )
	  ) as MODULE_TYPE,
	  T1.data_type,
	  T1.in_out,
	  T1.position,
	  decode(T1.overload,null, 1 ,T1.overload) as overload,
	  t1.sequence,
	  t1.data_level,
	  t1.default_value,
	  t1.default_length,
	  t1.data_length,
	  t1.data_precision,
	  t1.data_scale,
	  t1.type_owner,
	  t1.type_name,
	  t1.type_subname,
	  t1.type_link,
	  t1.pls_type,
	  t1.char_length,
	  t1.char_used
from
     all_arguments T1
where owner in ('СИС НАПРИМЕР')

...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953554
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мильпардон представление v$99010 состоит из столбца username, в котором сидят имена пользователей
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953572
cheshire_cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Очень выручили
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953573
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если 9i, то есть еще пакет dbms_metadata, может покопаться с ним, типа

Код: plaintext
1.
2.
3.
-- (тип объекта, имя объекта, хозяин)
SELECT dbms_metadata.get_ddl('PACKAGE', 'PKG1', 'HR2') AS Ddl 
FROM dual

PS Но, конечно, не в графическом виде
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953575
Фотография Coaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изобретаем велосипед?)))))))))
Очертания уже похожи, только вот колеса пока треугольные)))

Объясните тупому - ПОЧЕМУ?!!! НУ ПОЧЕМУ?! Вы не хотите стандартные средства использовать? Ну не пользуетесь вы VCS'ами, ну хотя бы взять навигатор или тоад или другую софтину различную и сделать compare . . .
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953593
Kettler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для парсинга обычно используют регулярные выражения.
В 9ке OWA_PATTERN или можно Java classов подгрузить.
Имхо без них никак :)
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953606
slywebmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть еще Oracle Change Management Pack для сравнения различных объектов на разных бд
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953644
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55Если 9i, то есть еще пакет dbms_metadata, может покопаться с ним, типа

Код: plaintext
1.
2.
3.
-- (тип объекта, имя объекта, хозяин)
SELECT dbms_metadata.get_ddl('PACKAGE', 'PKG1', 'HR2') AS Ddl 
FROM dual

PS Но, конечно, не в графическом виде

Выдает метаданные только на весь пакет целиком, сам могу
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953651
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CoasterИзобретаем велосипед?)))))))))
Очертания уже похожи, только вот колеса пока треугольные)))

Объясните тупому - ПОЧЕМУ?!!! НУ ПОЧЕМУ?! Вы не хотите стандартные средства использовать? Ну не пользуетесь вы VCS'ами, ну хотя бы взять навигатор или тоад или другую софтину различную и сделать compare . . .

И что мне с этого cоmpare? Нафига мне знать что в пакете есть изменения с 300099 строки? Что я должен буду делать дальше с этой полезной информацией?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953656
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KettlerДля парсинга обычно используют регулярные выражения.
В 9ке OWA_PATTERN или можно Java classов подгрузить.
Имхо без них никак :)

Буду признателен за более подробный рассказ
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953657
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoytИ что мне с этого cоmpare? Нафига мне знать что в пакете есть изменения с 300099 строки? Что я должен буду делать дальше с этой полезной информацией?

Навигатор покажет,что изменилось.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953664
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slywebmasterесть еще Oracle Change Management Pack для сравнения различных объектов на разных бд

Только в нем к сожалению нет такой функции замечательной "показать в пакете PP измененные функции со вчершнего вечера", а факт того что изменен именно пакет для меня не несет никакой смысловой нагрузки
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953666
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar Voyt
нет такого типа 'PACKAGE_BODY'

Чуток ошибся Хм... Если ошиблись, тогда почему использовали оператор like?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953669
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar VoytИ что мне с этого cоmpare? Нафига мне знать что в пакете есть изменения с 300099 строки? Что я должен буду делать дальше с этой полезной информацией?

Навигатор покажет,что изменилось.

Только у меня в системе 200 пакетов и 10000 функций в них, а также патологически глубокая вложенность вызовов. Посему изучать глазами - легче и вправду систему перетестить
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953699
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99 val-demar Voyt
нет такого типа 'PACKAGE_BODY'

Чуток ошибся Хм... Если ошиблись, тогда почему использовали оператор like?
А почему собственно говоря и не like ?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953710
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar
А почему собственно говоря и не like ?

Да можно, конечно и like, только мою проблему это ну никак не решает
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953843
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Voyt

Если решите сами писать,
то не забывайте что программеры люди творческие,
в какой из f1 поменял ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
declare
 function f1 return number is
 begin
   return  1 ;
 end;
 function f1(n number) return number is
 begin
   return  2 ;
 end;
 function f1(n date) return date is
 begin
   <<f1>> 
   declare
     function f1(n number) return number is
     begin
      return  5 ;
     end;
   begin
     null;
     return sysdate+f1( 1 );
   end f1;
   return null;
 end f1;
begin
  dbms_output.put_line(f1(d));
end;
SQL> /
 15 . 03 . 05 

PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953852
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax.2 Voyt

Если решите сами писать,
то не забывайте что программеры люди творческие,
в какой из f1 поменял ?


Не наблюдаю проблемы определить f1 Наблюдаю проблему как получить текст f1
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953868
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voyt
Не наблюдаю проблемы определить f1 Наблюдаю проблему как получить текст f1

Проблема, определить где заканчивается текст искомой процедуры.
Начало определить можно по имени и параметрам. Конец текста, не содержащий ни имени, ни комментария (то есть никакой связи с исходными данными)определить остается проблематично.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953881
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar
Проблема, определить где заканчивается текст искомой процедуры.


Вероятно там где начинается текст другой. Что делать со вложенными - вот это действительно вопрос, но мои разработчики их почему то не используют
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953915
val-demar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Voyt
Вероятно там где начинается текст другой.
Проблем бы тогда не было. А если она последняя в пакете ?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953954
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
val-demar Voyt
Вероятно там где начинается текст другой.
Проблем бы тогда не было. А если она последняя в пакете ?

Тогда за ней больше ничего нет. Меня бы это полностью устроило
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32953965
sataneyeff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в частном случае (в комментариях нет бегинов/эндов, функции не предопределяются вначале пакетов, энд всегда end; и т.п.) такое сработает
можно еще с аналитическими функциями помутить
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
DECLARE
   v_owner       VARCHAR2 ( 30 )  := 'SYS';
   v_proc        VARCHAR2 ( 255 ) := 'procedure SQL_DDL';
   v_name        VARCHAR2 ( 30 )  := 'STANDARD';
   v_line        NUMBER;
   begin_count   NUMBER         :=  0 ;
BEGIN
   SELECT line
     INTO v_line
     FROM dba_source
    WHERE TYPE = 'PACKAGE BODY'
      AND owner = v_owner
      AND NAME = v_name
      AND text LIKE '%' || v_proc || '%';

   FOR rc IN (SELECT   LOWER (text) text
                  FROM dba_source
                 WHERE TYPE = 'PACKAGE BODY'
                   AND owner = v_owner
                   AND NAME = v_name
                   AND line >= v_line
              ORDER BY line)
   LOOP
      DBMS_OUTPUT.put_line (rc.text);

      IF INSTR (rc.text, 'begin') >  0 
      THEN
         begin_count := begin_count +  1 ;
      END IF;

      IF INSTR (rc.text, 'end;') >  0 
      THEN
         begin_count := begin_count -  1 ;

         IF begin_count =  0 
         THEN
            RETURN;
         END IF;
      END IF;
   END LOOP;
END;
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32954057
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sataneyeffв частном случае (в комментариях нет бегинов/эндов, функции не предопределяются вначале пакетов, энд всегда end; и т.п.) такое сработает
можно еще с аналитическими функциями помутить


Согласен, а если название процедуры/функции стоит не в одной строке со словом PROCEDURE/FUNCTION?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32954189
Kettler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читаем Применение хранимых процедур Java в Oracle 8i
Читаем доку по регулярным выражениям.

Я бы сделал например так:
1. Удаляем все комментарии из package body
2. -//- литералы (то что в ' ' и в " ")
3. тогда возможны шаблоны
"(procedure.+?end;)\s+procedure"
"(procedure.+?end;)\s+function"
"(function.+?end;)\s+procedure"
"(function.+?end;)\s+function"
"(procedure.+?end;)\s+end;"
"(function.+?end;)\s+end;"

и т.д.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32954208
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХO придется писать конвейерную функцию
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32954302
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KettlerЧитаем Применение хранимых процедур Java в Oracle 8i
Читаем доку по регулярным выражениям.

Я бы сделал например так:
1. Удаляем все комментарии из package body
2. -//- литералы (то что в ' ' и в " ")
3. тогда возможны шаблоны
"(procedure.+?end;)\s+procedure"
"(procedure.+?end;)\s+function"
"(function.+?end;)\s+procedure"
"(function.+?end;)\s+function"
"(procedure.+?end;)\s+end;"
"(function.+?end;)\s+end;"

и т.д.
убираем "неудобные" end;
Код: plaintext
1.
2.
3.
4.
5.
select *
into v 
from dual 
where 'X'=case when dummy='X' then 'X' end;
/

Заменяем перевод строки (склеиваем end и ;)

Убираем нехорошие function

И тестируем, тестируем,тестируем,тестируем ...
для версий напр 8 1 6
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare
 v_end number;
 v_begin varchar2( 10 );
 cursor c1 is select dummy function from dual function;
 function f1 (function number)
   return number is
 begin
  <<f1>>
  begin
    null;
  end f1;
  select 'end;' as "procedure"
  into v_begin 
  from dual function ;
  execute immediate 'begin null;'||v_begin;
  return v_end;
 end
 ;
 function 
  f1(d varchar2 :='function f1') 
 return number is
 begin
  execute immediate 'select dummy from dual end' into v_begin ;
  return v_end;
 end f1;
begin
 v_end:=f1(sysdate);
end;
/

а конвеер все длиннеее,
а тестировщики пьют кофе и балдеют
Красиво жить не запретишь

Оно Вам надо
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #32954333
Фотография Voyt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax.а конвеер все длиннеее,
а тестировщики пьют кофе и балдеют
Красиво жить не запретишь

Оно Вам надо

Что это было
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как "распарсить" пакет?
    #39329798
Тимурр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалось решить задачу с парсером хринимки из пакета?
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #39329821
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тимурр,

ага, вот щяз прям автор не заходивший на форум лет 8 проснётся и прибежит тебе отвечать.
зы. оно не надо было тогда. не надо и сейчас.
...
Рейтинг: 0 / 0
Как "распарсить" пакет?
    #39329831
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тимурр,

19621564
...
Рейтинг: 0 / 0
49 сообщений из 49, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как "распарсить" пакет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]