oracle生成测试数据

网上找了一个sql可以大批量生成测试数据:

create table myTestTable as 
  select 
    rownum as id, 
    to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime, 
    trunc(dbms_random.value(0, 100)) as random_id, 
    dbms_random.string('x', 20) random_string 
  from dual 
    connect by level <= 1200000; 


执行时报错:
ORA-01536: 超出表空间 'USERS' 的空间限额

增加表空间:

alter user liu quota unlimited on users;

再执行时又报错:
ORA-30009: CONNECT BY 操作内存不足
or
ORA-30009: Not enough memory for CONNECT BY operation
继续阅读oracle生成测试数据

oracle rownum使用

rownum是oracle中神奇的列,它是一个伪列,是在sql查询出结果之后加在表上的。

oracle中rownum只能:
1)大于0,
2)等于1,
3)小于任何值。

1、大于0
比较:

select * from emp where rownum > 0;
select * from emp where rownum > 1;

rownum大于0,结果记录都返回。
rownum大于1,结果为空。

在执行过程中,rownum是从1开始的,判断rownum > 1时,第一条不满足会去掉,第二条又变成了1,所以最后结果会空。

2、等于1
比较:

select * from emp where rownum = 1;
select * from emp where rownum = 2;

rownum等于1,结果记录返回。
rownum等于2,结果为空。
继续阅读oracle rownum使用