oracle 存储过程 select语句的where条件中如果使用形参,则执行速度会变慢
procedureuploadSealsCode(p_app_noinvarchar2,--检定任务p_bar_codeinvarchar2,--设备条码p_ret_co...
procedure uploadSealsCode(p_app_no in varchar2, --检定任务
p_bar_code in varchar2, --设备条码
p_ret_code out varchar2,
p_ret_result out clob) is
。。。。。。。
。。。。。。。
for i in 1 .. a_bar_codes_array.count loop
delete from mt_SEAL_INST m where m.detect_task_no = p_app_no_temp and m.BAR_CODE = a_bar_codes_array(i);
insert into mt_SEAL_INST
select m.detect_task_no,
m.sys_no,
m.equip_categ,
t.bar_code,
c.SEAL_POSITION,
c.SEAL_BAR_CODE,
to_char(c.SEAL_DATE, 'yyyy-mm-dd hh24:dd:ss'),
c.SEALER_NO,
to_char(sysdate, 'yyyy-mm-dd hh24:dd:ss'),
0,
null,
'01'
from mt_detect_task m,mt_detect_out_equip t, CMD_SEAL_INST_RST c
where m.detect_task_no = p_app_no
and c.bar_code = a_bar_codes_array(i)
and m.detect_task_no = t.detect_task_no
and m.detect_task_no = c.task_no
and t.bar_code = c.bar_code;
end loop;
如果where条件直接写成where m.detect_task_no = ‘23232323’,则执行速度很快,如果使用形参速度会慢很多,请问有什么办法解决? 展开
p_bar_code in varchar2, --设备条码
p_ret_code out varchar2,
p_ret_result out clob) is
。。。。。。。
。。。。。。。
for i in 1 .. a_bar_codes_array.count loop
delete from mt_SEAL_INST m where m.detect_task_no = p_app_no_temp and m.BAR_CODE = a_bar_codes_array(i);
insert into mt_SEAL_INST
select m.detect_task_no,
m.sys_no,
m.equip_categ,
t.bar_code,
c.SEAL_POSITION,
c.SEAL_BAR_CODE,
to_char(c.SEAL_DATE, 'yyyy-mm-dd hh24:dd:ss'),
c.SEALER_NO,
to_char(sysdate, 'yyyy-mm-dd hh24:dd:ss'),
0,
null,
'01'
from mt_detect_task m,mt_detect_out_equip t, CMD_SEAL_INST_RST c
where m.detect_task_no = p_app_no
and c.bar_code = a_bar_codes_array(i)
and m.detect_task_no = t.detect_task_no
and m.detect_task_no = c.task_no
and t.bar_code = c.bar_code;
end loop;
如果where条件直接写成where m.detect_task_no = ‘23232323’,则执行速度很快,如果使用形参速度会慢很多,请问有什么办法解决? 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
4个回答
展开全部
可能是使用参数时未走索引,可以尝试强制索引。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议使用绑定变量,避免多次硬解析!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用where m.detect_task_no = '||p_app_no||'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是数据类型的问题吧,where m.detect_task_no = '''||p_app_no||''' 这样试试呢
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询