创建一个很大的EMP表 EMP_LARGE

Posted 黄景新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个很大的EMP表 EMP_LARGE相关的知识,希望对你有一定的参考价值。

--CREATE TABLE EMP_LARGE AS SELECT * FROM EMP ; ---先复制一张EMP表
DECLARE  --声明变量
  v_loop NUMBER;  
  v_num NUMBER;
  too_large EXCEPTION;
BEGIN  --开始执行
  FOR v_loop IN 1 .. 100 LOOP  --EMP开始是14条,14*2^100应该是很大的数了吧 
    SELECT COUNT(*) INTO v_num FROM emp_large;
    IF 
      v_num <= 1000000   ---输入你喜欢的行数
      THEN 
    INSERT INTO emp_large
      (empno, ename, job, mgr, hiredate, sal, comm, deptno)
    
      SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
        FROM emp_large;

  END IF;
  END LOOP;
  COMMIT;
  --如果大于指定数量,则删除多余的(排序不严谨,随机删除)
  IF v_num > 1000000 
    THEN RAISE too_large;  --抛异常
  END IF ;
      
  EXCEPTION  ---异常处理
     WHEN too_large --异常名称
       THEN 
         --删除多余的
         DELETE FROM emp_large WHERE ROWID IN ( 
 SELECT rd FROM (SELECT ROWNUM rn,ROWID RD FROM emp_large) WHERE 
 rn>1000000 ) ;
 
  COMMIT;
   SELECT COUNT(*) INTO v_num FROM emp_large;  ---重新输入数量显示
  dbms_output.put_line(运行成功,表emp_large的行数为:||v_num);

  WHEN OTHERS
    then
     dbms_output.put_line(执行失败);
    
 END;

 

以上是关于创建一个很大的EMP表 EMP_LARGE的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 表分区

Oracle中的emp表是否没有了

SQL的新手。无法创建表并插入值

为啥尽管源代码没有变化,但从一个系统到另一个系统的片段数量却有很大差异?

是否可以创建一个同时插入变量值和表字段的追加查询?

oracle 存储过程返回结果集怎么实现?用java如何调用这个存储过程?比如表scott下的emp表