Как извлечь все ключевые слова Oracle, используемые в функции / процедуре - PullRequest
0 голосов
/ 05 сентября 2018

Есть ли простой способ получить все ключевые слова Oracle, используемые в функции / процедуре?

Первое, что меня поражает, это разделение текста из user_source для данного имени объекта на основе пробела, но это оставит несколько сценариев непокрытыми, например, DBMS_OUTPUT.PUT_LINE ('HELLO WORLD') и т. Д.,

Есть ли другой способ, кроме деления на пробелы, точки, парантезы?

С уважением, KG

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете использовать встроенный ALL_STATEMENTS / ALL_IDENTIFIERS.

ALL_STATEMENTS описывает все операторы SQL в хранимых объектах PL / SQL, доступных пользователю.

И Сила облака PL / SQL :

Чтобы собрать информацию об идентификаторах PL / SQL и операторах SQL в вашей базе кода, выполните следующую инструкцию в своем сеансе

ALTER SESSION SET plscope_settings='identifiers:all, statements:all';
-- function/package compilation

SELECT st.owner,
       st.object_name,
       st.line,
       s.text
  FROM all_statements st join all_source s
    ON ( st.owner = s.owner
   AND st.object_name = s.name
   AND st.line = s.line )
 WHERE st.TYPE IN ('EXECUTE IMMEDIATE', 'OPEN')
...