sql - 如何提取函数/过程中使用的所有 Oracle 关键字
问题描述
有没有简单的方法来获取函数/过程中使用的所有 Oracle 关键字?
让我印象深刻的第一件事是根据空间从 user_source 中拆分给定对象名称的文本,但这会留下一些未发现的场景,例如 DBMS_OUTPUT.PUT_LINE('HELLO WORLD') 等,
除了按空格,点,括号分割之外,还有其他方法吗?
问候,公斤
解决方案
您可以使用内置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')
推荐阅读
- java - 计算到目前为止每 15 分钟时间段的成本
- regex - 匹配书面列表的正则表达式,例如“纽约、德克萨斯和佛罗里达”
- css - 使用 React Router 路由到另一个组件时 CSS 没有改变
- pegjs - PEGJS 不会在解析器文件中生成“module.exports”
- database - 我是否将本体与数据放在一起?
- javascript - 如何在同一堆栈中链接事件侦听器
- android - 对简历上的首选项进行更改时应用程序崩溃
- java - 使用 jar-in-jar 加载程序时出现 NoClassDefFoundError
- javascript - 将数据从 Node.JS 传递到前端 (EJS) 异步而不通过初始渲染传递数据?
- javascript - 使用javascript选中复选框时如何启用提交按钮?