在 Oracle Package/Procedure/Trigger/Functions 中编写的查询

问题描述

我想获取在 Oracle PLsql Package/Procedure/Functions/Triggers 中编写的所有查询(选择查询)。我的问题是,当这些包/过程等被执行时,那些查询保留在 Oracle 中的某处,比如在 DBA_HIST% 表或 v$sql/sqlAREA/sqlTEXT 表中。如果没有,我有什么办法可以获取它们。

任何帮助将不胜感激。

解决方法

从 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;
类型 OBJECT_NAME OBJECT_TYPE LINE SQL_ID 文本
插入 ADD_JOB_HISTORY 程序 10 252ppswgq6pwn INSERT INTO JOB_HISTORY (EMPLOYEE_ID,START_DATE,END_DATE,JOB_ID,DEPARTMENT_ID) VALUES(:B5,:B4,:B3,:B2,:B1 )