11g 環境用 CONNECT BY LEVEL <= 2000000 製造測試數據報 ORA-30009: CONNECT BY 操作內存不足。10g+ 支持 XMLTABLE 可繞過此限制。
INSERT /*+APPEND*/ INTO t_range
SELECT ROWNUM, TO_DATE(TO_CHAR(SYSDATE-120,'J') + TRUNC(DBMS_RANDOM.VALUE(0,120)),'J')
FROM DUAL CONNECT BY LEVEL <= 2000000;
-- ORA-30009
INSERT /*+APPEND*/ INTO t_range
SELECT ROWNUM, TO_DATE(TO_CHAR(SYSDATE-120,'J') + TRUNC(DBMS_RANDOM.VALUE(0,120)),'J')
FROM XMLTABLE('1 to 2000000');
-- 成功插入 200 萬行,耗時 28 秒
XMLTABLE('1 to N') 生成 1..N 的整數序列,無遞歸內存壓力,適合大批量測試數據生成。