Парсер PL / SQL для идентификации операции с таблицей

Я пишу парсер 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, чтобы узнать, процедура это или нет.

По моей логике, занимает много времени. Может ли кто-нибудь предложить лучшую логику для достижения моей ЦЕЛИ.

1
задан vrbilgi 21 September 2010 в 12:02
поделиться