项目上使用到一个批量插入数据的SQL,需要将一个时间区间内的每一个日期随record存到表中。在获取日期值的子查询中,尝试了dual和dba_objects。
使用dual + ROWNUM:
[code="sql"]
SELECT TO_DATE('01-01-2015', 'DD-MM-YYYY') + ROWNUM
FROM DUAL
WHERE TO_DATE('01-01-2015', 'DD-MM-YYYY') + ROWNUM <=
TO_DATE('10-01-2015', 'DD-MM-YYYY')
[/code]
结果如下:
[img]http://dl2.iteye.com/upload/attachment/0105/2670/3817de00-0fac-3ad2-8c4f-1d1ec0ee57c0.png[/img]
使用dba_objects + rownum:
[code="sql"]
SELECT TO_DATE('01-01-2015', 'DD-MM-YYYY') + ROWNUM
FROM DBA_OBJECTS
WHERE TO_DATE('01-01-2015', 'DD-MM-YYYY') + ROWNUM <=
TO_DATE('10-01-2015', 'DD-MM-YYYY')
[/code]
结果如下:
[img]http://dl2.iteye.com/upload/attachment/0105/2672/ddd2cc35-52e6-39d1-a23f-b7c68cdfd6c5.png[/img]
从测试结果中可以知道要使用dba_objects才行。但是不理解为什么dba_objects会产生循环的效果,而dual不会?哪位朋友有空讲解一下。 :D