【发布时间】:2021-05-11 04:28:27
【问题描述】:
我有下面的匿名语句运行成功
set serveroutput on
declare
l_certificate_number number;
BEGIN
SELECT MAX(certificate_number)
INTO l_certificate_number
FROM xx_tbl
WHERE pnd_type_code = 1
AND establishment_id = 1
AND period_name = 1;
dbms_output.put_line('Generate Certificate num ' ||to_char(l_certificate_number));
EXCEPTION
WHEN no_data_found THEN
l_certificate_number := 0;
dbms_output.put_line('Generate Certificate num ' ||to_char(l_certificate_number));
END;
并成功显示输出:
Generate Certificate num 1
PL/SQL procedure successfully completed.
我想查找 SQL_ID,但它没有出现在以下任何查询中:
select *
from v$sql
where sql_text like '%SELECT MAX(certificate_number)%';
select *
from v$sqlarea
where sql_text like '%SELECT MAX(certificate_number)%';
select *
from dba_hist_sqltext
where sql_text like '%SELECT MAX(certificate_number)%';
我很确定语句已执行,因为输出已显示。
我已经在Recently executed SQL not in V$SQL 中尝试过解决方案,但在GV$SQL 中也找不到它
知道在哪里可以找到 SQL_ID 吗?
【问题讨论】:
-
你展示的PL/SQL不好,没有';'在选择结束时...您是在寻找 SELECT 的 sql_id 还是完整的 PL/SQL 的 sql_id?
-
在从数据字典视图发出这些查询之前,可能有人或某些自动化系统(例如调度程序或作业刷新共享池)...
-
@gsalem 谢谢你。我现在已经添加了。