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’,则执行速度很快,如果使用形参速度会慢很多,请问有什么办法解决?
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
Andy_Sun321
2015-10-09 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:730万
展开全部
可能是使用参数时未走索引,可以尝试强制索引。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
下海摸象
2015-10-09
知道答主
回答量:64
采纳率:100%
帮助的人:22.6万
展开全部
建议使用绑定变量,避免多次硬解析!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜凉墨默
2018-03-02
知道答主
回答量:1
采纳率:0%
帮助的人:899
展开全部
可以使用where m.detect_task_no = '||p_app_no||'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尼舅妈
2015-10-09 · TA获得超过156个赞
知道小有建树答主
回答量:412
采纳率:50%
帮助的人:185万
展开全部
应该是数据类型的问题吧,where m.detect_task_no = '''||p_app_no||''' 这样试试呢
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式