首页 > 解决方案 > 如何提取函数/过程中使用的所有 Oracle 关键字

问题描述

有没有简单的方法来获取函数/过程中使用的所有 Oracle 关键字?

让我印象深刻的第一件事是根据空间从 user_source 中拆分给定对象名称的文本,但这会留下一些未发现的场景,例如 DBMS_OUTPUT.PUT_LINE('HELLO WORLD') 等,

除了按空格,点,括号分割之外,还有其他方法吗?

问候,公斤

标签: sqloraclestored-procedureskeywordkeyword-search

解决方案


您可以使用内置ALL_STATEMENTS/ ALL_IDENTIFIERS

ALL_STATEMENTS 描述了用户可访问的已存储 PL/SQL 对象中的所有 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')

推荐阅读