Я пишу парсер PL / SQL для идентификации операций (выбор, вставка, удаление), выполняемых над таблицей, когда я запускаю процедуру, функцию или пакет .
ЦЕЛЬ: I Цель этого инструмента - определить, на какие таблицы повлияет выполнение процедуры. Удовольствие от подготовки с лучшим тестовым примером.
Любые лучшие идеи или инструменты действительно очень помогут.
ВВОД: требуется некоторый файл SQL с процедурой
or proc file.
OUTPUT:
SELECT from: First_table, secondTable
-> В процедуре XYZ --Это если процедура вызывает еще одну процедуру
INSERT into: SomeTable
ВСТАВИТЬ в: SomeDiffTable
-> КОНЕЦ процедуры XYZ - Конец еще одной процедуры.
УДАЛИТЬ из: xyzTable
ВСТАВИТЬ в: OnemoreTable
Мое требование: когда я анализирую porc1, если он вызывает другой proc2. Мне нужно зайти внутрь этого proc2, чтобы узнать, что все операции выполняются в нем, и вернуться к proc1 и продолжить .:
Для этого я должен где-то хранить всю процедуру, и во время синтаксического анализа я должен проверять каждый токен (слово с пробелом) в tempStorage, чтобы узнать, процедура это или нет.
По моей логике, занимает много времени. Может ли кто-нибудь предложить лучшую логику для достижения моей ЦЕЛИ.