|
|
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
Возможно ли в Oracle "распарсить" PL/SQL-объект так, чтобы получить, как вариант, XML-документ, со всеми элементами и связями данного PL/SQL-объекта. Пример. Есть пакет, с единственной процедурой, которая возвращает количество уникальных значений определенного поля в таблице, на момент вызова процедуры. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. В данном случае, элементами PL/SQL-объекта являются: пакет PKG , процедура PR , SQL-запрос SELECT с обращением к таблице TBL , поле таблицы FLD , OUT параметр процедуры out_cnt , локальная переменная v_cnt и т.д. Связи между элементами: пакет PKG - процедура PR - SQL-запрос - таблица TBL - поле FLD , с процедурой PR так же связаны OUT параметр out_cnt , локальная переменная v_cnt , и так далее. Несколько примитивное объяснение, но достаточное, чтобы понять что необходимо получить на выходе. Нечто подобное(, но в ограниченном объеме) выполняют клиенты для работы в среде Oracle(TOAD, PL/SQL Developer и пр.), когда представляют дерево PL/SQL-объекта. Возможно ли нечто подобное получить по "готовому" объекту в справочнике БД или по тексту запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 13:34 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXie, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В данном случае что является элементами объекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 13:43 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXieВозможно ли нечто подобное получить по "готовому" объекту в справочнике БДRTFM Using PL/Scope (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 13:44 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
авторcreate or replace function f(p_func_in in number) return number is l_func_out number; procedure p (p_proc_in in number, p_proc_out out number) is begin p_proc_out := -p_proc_in; end; begin p(p_func_in, l_func_out); return l_func_out; end; / В данном случае что является элементами объекта? Элементы: f, p_func_in, возвращаемое функцией значение, l_func_out, p, p_proc_in, p_proc_out - вроде ни чего не пропустил. авторRTFM Using PL/Scope (FAQ) Могу ошибаться, но... PL/Scope может связать определенную процедуру в пакете с определенным полем таблицы, которая используется в запросе данной процедуры? Просьба поправить, если не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 13:53 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXiePL/Scope может связать определенную процедуру в пакете с определенным полем таблицы, которая используется в запросе данной процедуры?RTFM Identifier Types that PL/Scope Collects (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:01 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
Попробую более приближенно к "практике" поставить вопрос. Есть таблица, в которой есть определенное количество полей. Вокруг нее есть представления, синонимы, пакеты и т.д. Все это по какой то своей логике как то сложно между собой связано, образуя длинные цепочки передачи и преобразования значений полей таблицы. Дальше ставится вопрос: если мы перестанем заполнять поле FLD таблицы, то мы что то где то сломаем? или оно(поле) в конечном итоге ни где "логикой"(PL/SQL-объектами) не используется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:04 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
авторRTFM Identifier Types that PL/Scope Collects (FAQ) Благодарю за Ваш ответ. Попробую подробней ознакомиться с данной технологией. Если у кого то есть еще какие то мысли, просьба поделиться. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:07 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXieесли мы перестанем заполнять поле FLD таблицы, то мы что то где то сломаем? или оно(поле) в конечном итоге ни где "логикой"(PL/SQL-объектами) не используется?Самый быстрый способ - rename column :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:19 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
авторMaXie если мы перестанем заполнять поле FLD таблицы, то мы что то где то сломаем? или оно(поле) в конечном итоге ни где "логикой"(PL/SQL-объектами) не используется? Самый быстрый способ - rename column :) На "бою" и у Заказчика? ) Хотя признаться меня посещали такие мысли, как самый быстрый и точный способ ответа на этот вопрос. Но иногда "логика" крутится в течении всего дня, а то и ночи, т.е. заблокирована на уровне библиотечного кеша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:38 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXieавторMaXie если мы перестанем заполнять поле FLD таблицы, то мы что то где то сломаем? или оно(поле) в конечном итоге ни где "логикой"(PL/SQL-объектами) не используется? Самый быстрый способ - rename column :) На "бою" и у Заказчика? ) Хотя признаться меня посещали такие мысли, как самый быстрый и точный способ ответа на этот вопрос. Но иногда "логика" крутится в течении всего дня, а то и ночи, т.е. заблокирована на уровне библиотечного кеша. expdp metadata_only new_database с заглушками tablespace и созданными table impdp можно даже на desktop развернуть для проверки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:42 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
Еще "пять копеек" к постановке вопроса... Конечно же, если в моем первоначальном примере: авторCREATE PACKAGE PKG IS PROCEDURE PR(out_cnt OUT NUMBER); END; CREATE PACKAGE BODY PKG IS PROCEDURE PR(out_cnt OUT NUMBER) IS v_cnt NUMBER; BEGIN SELECT COUNT(DISTINCT FLD) INTO v_cnt FROM TBL; out_cnt := v_cnt; END; END; вместо таблицы использовалось бы представление, то "парсингу" подлежит и само представление. Т.е. идея состоит в том, чтобы разобрать("распарсить") все без исключения элементы, до конечных "атомарных"(неделимых). В данном случае представление строится на таблице, значит конечным элементом запроса, по данной ветке разбора , является таблица с ее полями, но только теми, которые используются в представлении, которые в свою очередь используются в процедуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:48 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXieНа "бою"У разработчика нет Dev DB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:51 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
авторexpdp metadata_only new_database с заглушками tablespace и созданными table impdp можно даже на desktop развернуть для проверки Спасибо за Ваш ответ. Анализирую насколько он может быть применен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:51 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXie, она может быть задействована в динамическом sql, в т.ч. в лежать в табличных данных user_source + поиск по таблицам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:51 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
авторУ разработчика нет Dev DB? У заказчика. Тест может быть не актуальным, не полным, "занят" и много других "причин". Вопрос дискуссионный. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:52 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
авторMaXie, она может быть задействована в динамическом sql, в т.ч. в лежать в табличных данных user_source + поиск по таблицам Абсолютно с Вами согласен! Ну если хотя бы на уровне допущения, что без динамического SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 14:57 |
|
||
|
Парсинг PL/SQL объекта
|
|||
|---|---|---|---|
|
#18+
MaXieавторУ разработчика нет Dev DB? У заказчика. Тест может быть не актуальным, не полным, "занят" и много других "причин". Вопрос дискуссионный. ) Пустая таблица с метаданными занимает копейки + еженежельный/ежедневный metadata import - позволит иметь тестовую базу для первоначальной проверки возможности наката патчей-исправлений Остается вопрос с dblink, но как правило, dblink с внешними системами документирован, так как завязан на договоры со сторонними организациями/отделами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 17:20 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39590104&tid=1884533]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 383ms |

| 0 / 0 |
