|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Здравствуйте, мне нужно написать программу, которая выводит список имен представлений, ссылающихся на табл/представление(входной параметр). Загвоздка в том, что нельзя использовать встроенные средства анализа зависимостей(например, user_dependencies). Есть ли предложение, каким образом ее можно решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:11 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Пишите парсер. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:25 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
andrey_anonymous, а можно чуть подробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:30 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Куда уж подробнее? Если нельзя использовать результаты работы штатного парсера Oracle rdbms, доступные посредством *_dependencides, остается только написать собственный парсер. Синтаксические диаграммы можно найти в штатной документации, методы написания парсеров и даже готовые инструменты для облегчения данной задачи - в интернетах. Всего несколько месяцев плотной работы, и: - серьезно прокачаете знание синтаксиса sql - научитесь писать/генерировать парсеры ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:37 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Jack963а можно чуть подробнее? Парсер языка SQL, позволяющий проанализировать исходный текст представлений для получения списка объектов на которые те ссылаются. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:38 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Зачем и почему нельзя использовать user_dependencies ? Ну а так, какие проблемы? Скачать Lexx/Yacc (или аналоги) на компьютер, взять Oracle документацию с синтаксисом команд, написать свой парсер SQL... через полгодика может что-то работоспособное и получится. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:39 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, это доп задание в универе. такое тоже нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:43 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Парсер языка SQL Пытался такое делать для PL/SQL, что бы строить зависимости библиотек для Oracle Forms. До конца не довел. Основной затык у меня был, что очень сложно разбирать идентификаторы вида schema.package.procedure_in_package в зависимости от контекста. Минимальную разборку самих команд (прогонял на исходном коде наших пакетов) сделал за пару недель, а с идентификаторами у меня был полный затык. AFAIK, насколько помню ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:44 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
andrey_anonymous, Это задание в универе, у меня буквально неделя есть ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:45 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Тогда уточняйте постановку и допустимые ограничения. В общем виде не осилите. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:46 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Oracle сам не разбирает код на лету, это задача компилятора. Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:38 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
andrey_anonymous Если нельзя использовать результаты работы штатного парсера Oracle rdbms, доступные посредством *_dependencides, остается только написать собственный парсер. просто парсера недостаточно, надо еще и dbms_utility.expand_sql_text . ну и еще можно извращенно и попроще: explain plan for select * from {view} + select * from plan_table where object_owner=... and object_type=... and object_name=... правда потребуется запретить все трансформации, merge/unnest, а по индексам проверять родительские таблицы (ну и optimizer_index_cost_adj задрать максимально, чтобы их поменьше было) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:57 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Jack963 Здравствуйте, мне нужно написать программу, которая выводит список имен представлений, ссылающихся на табл/представление(входной параметр). Загвоздка в том, что нельзя использовать встроенные средства анализа зависимостей(например, user_dependencies). Есть ли предложение, каким образом ее можно решить? К исходному коду можно доступиться через встроенные таблицы. Например: Код: plsql 1.
Это самое простое. Оно не отличает комментарии от кода, находит "dual" внутри слова, и т.д. Для views есть другая таблица, там ковыряться сложнее. Если надо делать по-взрослому со 100% точностью, то придется городить лексический парсер, находить синтаксические ошибки - много работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 17:01 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL Jack963 Здравствуйте, мне нужно написать программу, которая выводит список имен представлений, ссылающихся на табл/представление(входной параметр). Загвоздка в том, что нельзя использовать встроенные средства анализа зависимостей(например, user_dependencies). Есть ли предложение, каким образом ее можно решить? К исходному коду можно доступиться через встроенные таблицы. Например: Код: plsql 1.
Это самое простое. Оно не отличает комментарии от кода, находит "dual" внутри слова, и т.д. Для views есть другая таблица, там ковыряться сложнее. Если надо делать по-взрослому со 100% точностью, то придется городить лексический парсер, находить синтаксические ошибки - много работы. СтругСтргацкиеацкие, сказка о тройке.... — Я параграф двенадцатый знаю получше вашего! Я на нем крокодила съел, собакой закусил! Там сказано — анфас! По-русски понимаете? Ан-фас! Покажите мне, где у этого киселя анфас, и я его целый день снимать буду! Где у него анфас? Где? Ну где? Ну чего же молчите? Я самого господина... того самого... снимал! Я самого этого... как его... ну, в шляпе еще все ходил! Я параграф двенадцатый наизусть!.. А если фаса нет? У господина того самого фас был нормальный! У этого... как его... фас был будь здоров, в три дня не обгадишь! А у этого где?.. ... Мессир Не надо советовать того, что сам не знаешь Где в user_sources VIEW? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 17:19 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Vadim Lejnin НеофитSQL Например: Код: plsql 1.
Это самое простое. Оно не отличает комментарии от кода, находит "dual" внутри слова, и т.д. Для views есть другая таблица , там ковыряться сложнее. Где в user_sources VIEW? Вы не заметили? Они в другой таблице, в неудобном формате. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 20:28 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL в другой таблице, в неудобном формате. ЧЯДНТ? Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 01:31 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
andrey_anonymous, :) Код: plsql 1.
текст не разбит на строки, и в каком-то старом формате LONG. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 01:40 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL текст не разбит на строки, и в каком-то старом формате LONG. Продолжаем выяснять за "другую таблицу" ЧЯДНТ? Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 01:50 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL, понятно, что не читатель - проблемы со зрением? на пару сообщений выше своего не осилил 22197542 ? НеофитSQL в каком-то старом формате LONG. USER_VIEWS.TEXT_VC ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 01:56 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL Vadim Lejnin пропущено... Где в user_sources VIEW? Вы не заметили? Они в другой таблице, в неудобном формате. Я это не "замечал", я это знаю: 22197542 Это Вы не старательно не заметили посыл: Vadim Lezhnin... Не надо советовать того, что сам не знаешь ... Вопрос топика: Jack963 ... представлений, ссылающихся на табл/представление(входной параметр). ... Ваш ответ: НеофитSQL К исходному коду можно доступиться через встроенные таблицы. Например: Код: plsql 1.
... Это так, для иллюстрации вашего совета: Код: plsql 1. 2. 3.
Если советуете, то укажите явно, где и что лежит И да, получить текст VIEW "не старом" формате, можно специально предназначенным инструментом: DBMS_METADATA ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 02:37 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Потихоньку, помаленьку, с миру по нитке, у ТС начал сформировываться разумный ответ. А то сразу "пишите парсер", "не осилите". Может, ТС просто не знал куда начать смотреть, и как в LONG строку искать. Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 03:36 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL Потихоньку, помаленьку, с миру по нитке, у ТС начал сформировываться разумный ответ. А то сразу "пишите парсер", "не осилите". Может, ТС просто не знал куда начать смотреть, и как в LONG строку искать. Код: plsql 1. 2. 3. 4. 5.
Вместо тысячи слов... Код: plsql 1. 2. 3. 4. 5.
Троль... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 03:43 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
Vadim Lejnin, Там все в порядке, ты просто первую строчку пропустил. Без нее не получится. Ctrl-C, Ctrl-V. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 05:14 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL Потихоньку, помаленьку, с миру по нитке, у ТС начал сформировываться разумный ответ. А то сразу "пишите парсер", "не осилите". 1. Попробуйте рассказать, как именно Ваши сообщения помогут ТС решить его задачу по поиску зависимостей. Ну хотя бы приблизительно. 2. Когда беретесь самообучаться посредством консультирования окружающих: даже на кажущиеся очевидными вопросы имеет смысл отвечать только при уверенности в правильности и полноте ответа не менее чем на на 146%, и то после проверки - имидж клоуна заработать много проще, чем от него избавиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 12:08 |
|
PL/SQL список представлений ссылающихся на табл/представление
|
|||
---|---|---|---|
#18+
НеофитSQL Может, ТС просто не знал куда начать смотреть, и как в LONG строку искать. Не поможет. Во первых ты ищешь dual а в представлении может быть DUAL, dUAL,dUaL... UPPER/LOWER в общем случае не поможет т.к. имя может быть регистро-зависимым. Во вторых твой "метод" выдаст false-positive на представления ссылающиеся на dual как часть имени поля, таблицы... или просто части литерала. В третьих твой "метод" выдаст false-negative например когда FROM clause представления ссылается на синоним на DUAL. В четвертых зависимость может быть неявной - представление ссылается на представление которое ссылается на DUAL или в представлении используется функция которая ссылается на DUAL. Так-что без парсера тут туго. Но ты дерзай . SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2020, 15:04 |
|
|
start [/forum/topic.php?fid=52&msg=40000429&tid=1880826]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 159ms |
0 / 0 |