|
|
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Проблема философская Есть пакет в БД. Можно получить список функций/процедур из пакета и входные и выходные параметры - с этим проблем не возникло. Хочется получить содержимое тела функции/процедуры, находящейся в пакете. Особо идеально было бы одним оператором select. Как альтернатива - может есть какое нибудь инструментальное средство, позволяющее сделать сию операцию? С Oracle Designer такая штука не проходит в том виде как мне требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 12:54 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:02 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Q Код: plaintext 1. 2. 3. 4. 5. И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:05 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:22 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar Код: plaintext 1. 2. 3. 4. нет такого типа 'PACKAGE_BODY' И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:26 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voytнет такого типа 'PACKAGE_BODY' И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакетЗато есть "PACKAGE BODY". Его и увидите. А потом берёте текст тела пакета и парсите как вам заблагорассудится - вдоль и поперёк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:29 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
VoytЯ ж текст функции FF из пакета PP желаю увидеть, а не весь пакет Я б искал так Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:34 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов Voytнет такого типа 'PACKAGE_BODY' И что я увижу? Пакет меня слабо интересует. Я ж текст функции FF из пакета PP желаю увидеть, а не весь пакетЗато есть "PACKAGE BODY". Его и увидите. А потом берёте текст тела пакета и парсите как вам заблагорассудится - вдоль и поперёк. Собственно суть вопроса и состоит в том как его распарсить вдоль и поперек Условно говоря хотелось бы иметь select подобного вида select text from "чего-то" where owner='овнер' and package_name='имя пакета' and module_type='FUNCTION' and module_name='имя функции в ентом пакете'; Сильно нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:35 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voyt нет такого типа 'PACKAGE_BODY' Чуток ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:36 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar Я б искал так Код: plaintext 1. 2. 3. 4. Только моих разработчиков сложно заставить писать имя процедуры в одной строке со словом "PROCEDURE" - их вообще невозможно заставить что либо делать по какому то правилу. Сия задача возникла из-за того, что группа не вмеру активных и творчески одухотворенных разрабочиков генерируют новые пакеты и изменяют старые со скоростью секретаря-референта. Причем документировать работу считают занятием постыдным и недостойным. В результате бедные тестеры приходя утром на работу начинают перетестировать систему заново. Как результат - все что работало вчера к 6 вечера - сегдоня к 9 утра работает не так или совсем не работает. Вот и возникло желание помочь людям хоть как то Отзовитесь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 13:51 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voyt Только моих разработчиков сложно заставить писать имя процедуры в одной строке со словом "PROCEDURE" - их вообще невозможно заставить что либо делать по какому то правилу. Причем документировать работу считают занятием постыдным и недостойным. Ого #$% А заставить писать имя процедуры после end'a реально ? Тогда можно будет выбрать номер строки с первым и следующим совпадением в тексте имени процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:19 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voytup А что хочется получить?.. отпарсить и что вытащить?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:21 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
HX Voytup А что хочется получить?.. отпарсить и что вытащить?.. В двух словах - из пакета текст функции, зная имя владельца пакета, имя пакета и имя функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:25 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
А что предполагается делать дальше с текстом ф-ии?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:28 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar Ого #$% А заставить писать имя процедуры после end'a реально ? Тогда можно будет выбрать номер строки с первым и следующим совпадением в тексте имени процедуры. Вот и "ого" Нет, не реально заставить вообще, посему приходится выкручиваться "as is". Устроит вариант любой - временные характеристики для парсинга не важны - пусть хоть час выковыриывает Хотя за час может многое в системе измениться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:29 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
VoytЕсть пакет в БД. Можно получить список функций/процедур из пакета и входные и выходные параметры - с этим проблем не возникло. А как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:35 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
HXА что предполагается делать дальше с текстом ф-ии?.. Предполагается сравнить ее текст с ранее имеющимся и увидеть какие функции в пакете были модифицированы и как это отразится на функциях системы. В идеале - на графической модели. Чтоб тестер пришел утром и не мучал всю систему хаотично - а тестил только функции, потенциально опасные для общества ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:37 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voyt HXА что предполагается делать дальше с текстом ф-ии?.. Предполагается сравнить ее текст с ранее имеющимся и увидеть какие функции в пакете были модифицированы и как это отразится на функциях системы. В идеале - на графической модели. Чтоб тестер пришел утром и не мучал всю систему хаотично - а тестил только функции, потенциально опасные для общества А дерево зависимостей этой задаче не поможет?.. user_dependencies?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:39 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:41 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Мильпардон представление v$99010 состоит из столбца username, в котором сидят имена пользователей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:42 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Очень выручили ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:46 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Если 9i, то есть еще пакет dbms_metadata, может покопаться с ним, типа Код: plaintext 1. 2. 3. PS Но, конечно, не в графическом виде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:47 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Изобретаем велосипед?))))))))) Очертания уже похожи, только вот колеса пока треугольные))) Объясните тупому - ПОЧЕМУ?!!! НУ ПОЧЕМУ?! Вы не хотите стандартные средства использовать? Ну не пользуетесь вы VCS'ами, ну хотя бы взять навигатор или тоад или другую софтину различную и сделать compare . . . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:47 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Для парсинга обычно используют регулярные выражения. В 9ке OWA_PATTERN или можно Java classов подгрузить. Имхо без них никак :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:51 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
есть еще Oracle Change Management Pack для сравнения различных объектов на разных бд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:54 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
tru55Если 9i, то есть еще пакет dbms_metadata, может покопаться с ним, типа Код: plaintext 1. 2. 3. PS Но, конечно, не в графическом виде Выдает метаданные только на весь пакет целиком, сам могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:05 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
CoasterИзобретаем велосипед?))))))))) Очертания уже похожи, только вот колеса пока треугольные))) Объясните тупому - ПОЧЕМУ?!!! НУ ПОЧЕМУ?! Вы не хотите стандартные средства использовать? Ну не пользуетесь вы VCS'ами, ну хотя бы взять навигатор или тоад или другую софтину различную и сделать compare . . . И что мне с этого cоmpare? Нафига мне знать что в пакете есть изменения с 300099 строки? Что я должен буду делать дальше с этой полезной информацией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:06 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
KettlerДля парсинга обычно используют регулярные выражения. В 9ке OWA_PATTERN или можно Java classов подгрузить. Имхо без них никак :) Буду признателен за более подробный рассказ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:07 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
VoytИ что мне с этого cоmpare? Нафига мне знать что в пакете есть изменения с 300099 строки? Что я должен буду делать дальше с этой полезной информацией? Навигатор покажет,что изменилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:08 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
slywebmasterесть еще Oracle Change Management Pack для сравнения различных объектов на разных бд Только в нем к сожалению нет такой функции замечательной "показать в пакете PP измененные функции со вчершнего вечера", а факт того что изменен именно пакет для меня не несет никакой смысловой нагрузки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:09 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar Voyt нет такого типа 'PACKAGE_BODY' Чуток ошибся Хм... Если ошиблись, тогда почему использовали оператор like? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:09 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar VoytИ что мне с этого cоmpare? Нафига мне знать что в пакете есть изменения с 300099 строки? Что я должен буду делать дальше с этой полезной информацией? Навигатор покажет,что изменилось. Только у меня в системе 200 пакетов и 10000 функций в них, а также патологически глубокая вложенность вызовов. Посему изучать глазами - легче и вправду систему перетестить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:11 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
PL99 val-demar Voyt нет такого типа 'PACKAGE_BODY' Чуток ошибся Хм... Если ошиблись, тогда почему использовали оператор like? А почему собственно говоря и не like ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:21 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar А почему собственно говоря и не like ? Да можно, конечно и like, только мою проблему это ну никак не решает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 15:24 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:04 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Stax.2 Voyt Если решите сами писать, то не забывайте что программеры люди творческие, в какой из f1 поменял ? Не наблюдаю проблемы определить f1 Наблюдаю проблему как получить текст f1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:07 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voyt Не наблюдаю проблемы определить f1 Наблюдаю проблему как получить текст f1 Проблема, определить где заканчивается текст искомой процедуры. Начало определить можно по имени и параметрам. Конец текста, не содержащий ни имени, ни комментария (то есть никакой связи с исходными данными)определить остается проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:11 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar Проблема, определить где заканчивается текст искомой процедуры. Вероятно там где начинается текст другой. Что делать со вложенными - вот это действительно вопрос, но мои разработчики их почему то не используют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:16 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Voyt Вероятно там где начинается текст другой. Проблем бы тогда не было. А если она последняя в пакете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:27 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
val-demar Voyt Вероятно там где начинается текст другой. Проблем бы тогда не было. А если она последняя в пакете ? Тогда за ней больше ничего нет. Меня бы это полностью устроило ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:38 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
в частном случае (в комментариях нет бегинов/эндов, функции не предопределяются вначале пакетов, энд всегда 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:43 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
sataneyeffв частном случае (в комментариях нет бегинов/эндов, функции не предопределяются вначале пакетов, энд всегда end; и т.п.) такое сработает можно еще с аналитическими функциями помутить Согласен, а если название процедуры/функции стоит не в одной строке со словом PROCEDURE/FUNCTION? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 17:12 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Читаем Применение хранимых процедур 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;" и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 17:59 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
ИМХO придется писать конвейерную функцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 18:06 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
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. Заменяем перевод строки (склеиваем 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. а конвеер все длиннеее, а тестировщики пьют кофе и балдеют Красиво жить не запретишь Оно Вам надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 19:07 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Stax.а конвеер все длиннеее, а тестировщики пьют кофе и балдеют Красиво жить не запретишь Оно Вам надо Что это было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 19:23 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Удалось решить задачу с парсером хринимки из пакета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 13:31 |
|
||
|
Как "распарсить" пакет?
|
|||
|---|---|---|---|
|
#18+
Тимурр, ага, вот щяз прям автор не заходивший на форум лет 8 проснётся и прибежит тебе отвечать. зы. оно не надо было тогда. не надо и сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 13:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1887199]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
197ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 525ms |

| 0 / 0 |
