现在的位置: 首页 > 综合 > 正文

execute immediate into 语句的性能问题(oracle)

2013年05月04日 ⁄ 综合 ⁄ 共 649字 ⁄ 字号 评论关闭
前几天写了个oracle的procedure用来将一个其中有很多不相干数据Excel文件中的有用数据提取出来以单条记录形式循环插入一张表中存放,我在procedure中用了2个游标嵌套来遍历进行判断,完成之后procedure执行的时候并没有什么问题结果也能很成功的导入进去,就是procedure执行的时间很不稳定,最快能12s,最慢能到40s,郁闷了很长时间,最后跟进去调了2个小时终于发现原来是这句话惹的祸~~~~
execute immediate'select '|| V_月报列名||' from v_月报原始视图 where rownum=1 and 月报编号='''||V_YBBH||''' and 预留列2 is not null' into V_临时列;
               
execute immediate'select '|| V_月报列名||' from (select v_月报原始视图.*,rownum as JN序号 from v_月报原始视图 where 月报编号='''||V_YBBH||''' and 预留列2 is not null) where JN序号=2' into V_临时列2;

我在游标中用了动态执行SQL的语句 execute immediate 结果 into 变量   这句话严重影响了性能 速度很慢 执行一次还好但是 是需要循环8000多次速度就会变的暴慢而且很不稳定.......看来在大量数据游标循环中使用动态赋值语句性能损耗是巨大的。。。。

抱歉!评论已关闭.