从页面得到一个范围值,如1-100,需要向数据库插入000001-000100,并且不能有重复值,比如页面输入2-20,数据库里不能有000002-000020这样的编号.  用的是oracle数据库.  来高人求救,最好详细些.谢谢谢谢啦.

解决方案 »

  1.   


    select lpad(substr('1-100',1,instr('1-100','-')-1),6,0)||'-'||lpad(substr('1-100',instr('1-100','-')+1,length('1-100')),6,0)
    from dual
      

  2.   

    用过程实现,循环取出每一个值并格式化为6为(select to_char(1,'FM000000') from dual;)如果此字段是建了唯一索引,可以通过异常处理来实现重复时不插入
    如果没有建唯一索引,就merge into
      

  3.   


    create or replace procedure sp_test
    (
      iMin int,
      iMax int
    ) as 
      i int;
      strFormat char(6);
    begin
      for i in iMin..iMax loop
        begin
          select to_char(i,'FM000000') into strFormat from dual;
          insert into ... --此处自己补充
        exception
          when indx_test then --indx_test即建在此字段上的唯一索引名
             null;
        end;
      end loop;
    end;
      

  4.   

    select lpad(rownum,6,'0') from dual connect by rownum<=100-1+1;
      

  5.   


    INSERT INTO TEST5(COL1)
      SELECT COL2
        FROM (SELECT LPAD(2 + ROWNUM - 1, 6, '0') AS COL2
                FROM DUAL
              CONNECT BY ROWNUM < 20 - 2 + 1) T1
       WHERE COL2 NOT IN (SELECT COL1 FROM TEST5)