【发布时间】:2022-01-22 23:32:12
【问题描述】:
我在性能或程序上有问题。 该过程有游标声明,然后是带有更新语句的循环体。 当我运行该程序时,运行所有行更新需要几个小时,但是当我将代码放入 toad 的匿名块中时,更新所有行需要 3 分钟! 代码之间没有区别,只是一个是在程序中,另一个是带有declear和body的块。 程序是这样的:
CREATE OR REPLACE procedure name_proc
is
v_start_lvl number;
v_level_nick varchar2(50);
v_rec_id number;
v_parent_type varchar2(3);
path_desc_num varchar2(1000);
delim_cut number;
error_var number;
cursor strt_lvl is
select REC_ID from WR_LEVELS_PATH
where start_level=-1;
BEGIN
for rec in strt_lvl loop
begin
begin
v_rec_id:=rec.rec_id;
select tr_parent
into v_start_lvl
from
(select tr_parent
from WR_LEVEL_PARENTS_REF
where rec.rec_id=REC_ID and PARENT_TYPE in ('STS','STM')
order by PARENT_TYPE)
where rownum=1;
if (v_start_lvl is not null)
then
begin
update WR_LEVELS_PATH
set start_level=v_start_lvl
where rec_id=rec.rec_id;
end;
end if;
end;
end loop;
commit;
end;
有人对此有解释吗?请!!!!
【问题讨论】:
-
不同的执行计划,也许吧?还是您缺少的代码可能存在一些差异?它们更新的行数是否相同?
标签: sql oracle plsql oracle10g