有一个表,里面有一个字段DO_QUALSTATE,
这个字段的取值 有一定的限制 0:释放1:封锁2:返修3:脱合同4:报废5:判次6:改规A:预封锁
也就是值只能为 0,1,2,3,4,5,6,A 当中的一个。有没有什么方法可以比较快的 而且是随机的插入 5000条 记录
就是 这个字段的 值是不固定的,只要是 上面 8个值当中的一个就可,
但要求是 随机插入,谢谢,不知道这里有没有人可以实现 
发了好多论坛 最后希望在这里可以结贴
谢谢 高手赐教

解决方案 »

  1.   

    给你个过程直接执行,把t换成你的表名begin
      for i in 1 .. 5000 loop
        insert into t(DO_QUALSTATE)
          select *
            from (select *
                    from (select '1'
                            from dual
                          union
                          select '2'
                            from dual
                          union
                          select '3'
                            from dual
                          union
                          select '4'
                            from dual
                          union
                          select '5'
                            from dual
                          union
                          select '6'
                            from dual
                          union
                          select '0'
                            from dual
                          union
                          select 'A' from dual)
                   order by dbms_random.value)
           where rownum = 1;
      end loop;
      commit;
    end;
      

  2.   

    declare 
    type ch is RECORD(chr varchar2(2));
    type ar is table of
    ch index by BINARY_INTEGER;ary ar;begin
     
            ary(1).chr:='0';
            ary(2).chr:='1';
            ary(3).chr:='2';
            ary(4).chr:='3';
            ary(5).chr:='4';
            ary(6).chr:='5';
            ary(7).chr:='6';
            ary(8).chr:='A';        
            
            for i in 1 .. 5000 loop
            
                insert into table_name(DO_QUALSTATE) values(ary(dbms_random.value(1,8)).chr);        end loop;
    end;
      

  3.   

    insert into table_name(DO_QUALSTATE) 
    values(decode(ceil(dbms_random.value(0, 7)),1,'1',2,'2',3,'3',4,'4',5,'5',6,'6',7,'A'));