创建一个有20个varchar2(100)和20个number字段的表,循环插入10000000(参数控制)个记录,然后循环创建上面的表100(参数控制)个,不超过20G。  非常感谢!

解决方案 »

  1.   


    declare 
        v_sql varchar2(1000);
    begin
        -- 创建表  t1
        v_sql := 'create table t1(';
        for x in 1..20 loop
           v_sql := v_sql || 'v' || x || ' varchar(100),';
           v_sql := v_sql || 'n' || x || ' number,';
        end loop;
        v_sql := substr(v_sql, 1, length(v_sql) -1);
        v_sql := v_sql || ')';
        -- dbms_output.put_line(v_sql);
        execute immediate v_sql; 
        -- 插入 100 条记录
        for x in 1..100 loop
            v_sql := 'insert into t1(v1,n1,v2,n2) values(:0, :1, :2, :3)';
            execute immediate v_sql using x, x, x, x;
        end loop;
        -- 复制 另外  19 张表 t2 - t20
        for x in 2..20 loop
            v_sql := 'create table t' ||  x || ' as select * from t1';
            execute immediate v_sql;
        end loop;
    end;
    /