create or replace package body PKG_SC_ZYLC_ALL is
procedure pro_insert_zylc_all is
type type_zylc is ref cursor;
cur_zylc type_zylc;
str_sql varchar2(2000);
rec_zylc temp_zylc%rowtype;
---
begin
---
insert into temp_zylc
(cbdtjh_bh,
tbxm_mc,
zylc_id,
zylc_kssj,
zylc_jssj,
memo,
lrsj,
lrr_code)
select b.cbxh cbdtjh_bh,
a.ZYJTSDM tbxm_mc,
a.cbxh || '-' || a.tsxh zylc_id,
a.QSSJ zylc_kssj,
a.JSSJ zylc_jssj,
a.BZ memo,
a.CZSJ lrsj,
a.CZR lrr_code
from v_zh_tjg_cb_tbsj a, s_cbdt_yqb b
where a.CBXH = substr(b.cbxh, 2, length(b.cbxh))
and not exists
(select 1
from s_zyzh_zylc
where s_zyzh_zylc.zylc_id = a.cbxh || '-' || a.tsxh);
------------------------------------------------------
insert into s_zyzh_zylc
(cbdtjh_bh,
tbxm_mc,
zylc_id,
zylc_kssj,
zylc_jssj,
memo,
lrsj,
lrr_code)
select cbdtjh_bh,
tbxm_mc,
zylc_id,
zylc_kssj,
zylc_jssj,
memo,
lrsj,
lrr_code
from temp_zylc;
------------------------------------------------
str_sql := 'select * from temp_zylc ';
open cur_zylc for str_sql;
loop
fetch cur_zylc
into rec_zylc;
exit when cur_zylc%notfound;
if rec_zylc.tbxm_mc = '装' or rec_zylc.tbxm_mc = '卸' then
update s_cbdt_yqb
set kgsj = rec_zylc.zylc_kssj, wgsj = rec_zylc.zylc_jssj
where cbxh = rec_zylc.cbdtjh_bh;
elsif rec_zylc.tbxm_mc = '开船' then
update s_cbdt_yqb
set sjlgsj = rec_zylc.zylc_jssj
where cbxh = rec_zylc.cbdtjh_bh;
elsif rec_zylc.tbxm_mc like '%进港%' then
update s_cbdt_yqb
set sjjgsj = rec_zylc.zylc_kssj
where cbxh = rec_zylc.cbdtjh_bh;
elsif rec_zylc.tbxm_mc like '%移泊%' then
update s_cbdt_yqb
set ybsj = rec_zylc.zylc_kssj
where cbxh = rec_zylc.cbdtjh_bh;
end if;
end loop;
-----------------------------------------------
commit;
end;
end PKG_SC_ZYLC_ALL;
以上是存储过程!
包含游标的存储过程执行速度超慢,可数量并不大啊每次才几十条!!!!
答案:2 悬赏:0
解决时间 2021-04-23 04:27
- 提问者网友:若相守£卟离
- 2021-04-22 11:32
最佳答案
- 二级知识专家网友:24K纯糖
- 2021-04-22 12:34
是你游标查询的表太大了,而且索引做的不好,或者游标查询的是一张视图,而这张视图很慢,你可以直接查询这张表(视图),看一下速度如何!另外,不用每次提交,可以每一百条提交,也有轻微的提速!
全部回答
- 1楼网友:浪者不回头
- 2021-04-22 14:09
我是来看评论的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯