在 Oracle 包/过程/触发器/函数中编写的查询

Posted

技术标签:

【中文标题】在 Oracle 包/过程/触发器/函数中编写的查询【英文标题】:Queries written inside Oracle Package/Procedure/Trigger/Functions 【发布时间】:2020-12-31 09:33:01 【问题描述】:

我想获取在 Oracle PLSQL 包/过程/函数/触发器中编写的所有查询(选择查询)。我的问题是,当那些包/过程等被执行时,那些查询保留在 Oracle 中的某个地方,比如在 DBA_HIST% 表或 v$SQL/SQLAREA/SQLTEXT 表中。如果没有,有什么方法可以获取它们。

任何帮助将不胜感激。

【问题讨论】:

Oracle 数据字典视图ALL_SOURCE ? 【参考方案1】:

从 12.2 开始,PL/Scope 可以在存储的 PL/SQL 中收集 SQL 语句的详细信息。

如果您使用(例如)编译一个或多个(或所有)PL/SQL 程序单元:

alter session set plscope_settings='STATEMENTS:ALL';

call dbms_utility.compile_schema(user);

那么 SQL 语句将出现在USER|ALL|DBA_STATEMENTS 视图中:

select type, object_name, object_type, line, sql_id, text
from   user_statements;
TYPE OBJECT_NAME OBJECT_TYPE LINE SQL_ID TEXT
INSERT ADD_JOB_HISTORY PROCEDURE 10 252ppswgq6pwn INSERT INTO JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID) VALUES(:B5 , :B4 , :B3 , :B2 , :B1 )

【讨论】:

以上是关于在 Oracle 包/过程/触发器/函数中编写的查询的主要内容,如果未能解决你的问题,请参考以下文章

Oracle --- 存储过程函数包游标触发器

Oracle --- 存储过程函数包游标触发器

为啥 oracle 中的应用程序上下文使用 PL/SQL 过程

pl/sql编程基础

如何导出存储过程函数包和触发器的定义语句?如何导出表和索引的创建语句?

Oracle 编程