ORACLE 存储过程插入数据排序混乱

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 存储过程插入数据排序混乱相关的知识,希望对你有一定的参考价值。

如题: 写了个存储过程批量向日期表中插入日期,但是插入后的日期并不是按次序来的 核心代码: WHILE (to_date('01/01/2010','mm/dd/yyyy')< to_date('12/31/2015','mm/dd/yyyy')) loop sDate:=to_char(dDate, 'yyyymmdd'); INSERT INTO XX(XX)values(sDate); dDate := dDate + adddays; END loop; dDate:=to_date('01/01/2010','mm/dd/yyyy')

参考技术A 从给出的程序看,执行完程序后,通过xx字段排序查询就可以了。不过给出的程序有点问题,是个死循环。(to_date('01/01/2010','mm/dd/yyyy')< to_date('12/31/2015','mm/dd/yyyy')) 这里不含变量,因此这个条件永远满足。改成如下程序就可以了。
DECLARE

adddays NUMBER:=0;

i NUMBER:=5;

--步长
BEGIN

WHILE to_date('01/01/2010','mm/dd/yyyy')+adddays<=

to_date('12/31/2015','mm/dd/yyyy')

LOOP

INSERT INTO
XX(XX)values(to_date('01/01/2010','mm/dd/yyyy')+adddays);

adddays:=adddays+i;

END loop;
END;
运行结果:
参考技术B 楼上说的很有道理,插入的顺序并不一定像select
*
from
XX显示的那样。
想在查询的时候保持与插入时一致的顺序,最简单的方法就是加入一个索引列,设置成自增,在查询的时候按照这一列的值进行排序即可。

以上是关于ORACLE 存储过程插入数据排序混乱的主要内容,如果未能解决你的问题,请参考以下文章

oracle存储过程效率问题,处理1500w的数据插入

oracle存储过程查找表数据插入另一个表中。。

用oracle存储过程将一张表的数据查出插入另一张表

用oracle存储过程将一张表的数据查出插入另一张表

oracle 存储过程循环插入数据不定时出现卡死,求高手指点,循环过程如下:

mysql存储过程怎样批量插入数据