解决方案 »

  1.   

    嗯,只能创建一个序列值,insert的时候引用序列的nextval
      

  2.   

    SQL> CREATE SEQUENCE e_idx
      2  INCREMENT BY 1
      3   START WITH 1
      4   MAXVALUE   9999
      5  /
     
    Sequence created
     
    SQL>  select lpad(e_idx.nextval,4,'0') from dual;
     
    LPAD(E_IDX.NEXTVAL,4,'0')
    -------------------------
    0001
     
    SQL> 
      

  3.   

    首先介绍下lpad用法:
    lpad(字段名,填充长度,填充的字符),字段名就是你要对其进行填充的字段(可以是字符数字等)
    ,填充长度是你填充后字段的长度,填充字符可以使数字、字母等。
     select lpad(5,4,'B') from dual;
    结果是:BBB5
    按你的要求就要:
    先建立一个序列,
      create sequence  bill_id
      increment by 1
      start with 1
      maxvalue 9999;
      在对其进行查找并在之基础上对其进行填充0,
      select lpad(bill_id.nextval,4,'0') from dual;
     运行结果是如图:
      

  4.   

    楼主需要的应该是要自动在左边补零的功能
    创建sequence调用oracle的LPAD函数就好了。create sequence SEQ
    minvalue 1
    maxvalue 9999
    start with 21
    increment by 1
    cache 20;INSERT INTO TB(column1)VALUES(LPAD(SEQ.NEXTVAL,4,'0')) 
      

  5.   

    我觉得你可以正常插入数据1,2,3.....,当然可以要使用sequence了。
    创建sequence语句:
    create sequence mysequence
    increment by 1
    start with 1
    maxvalue 9999
    cache 10;insert into TB(bill_id)values(mysequence.nextval);
    然后查询的使用:
    select to_char(bill_id,'0000') from TB;结果:
      

  6.   

    使用序列的方式,如果rollback的话序列还是会正常+1不会退回,就不能产生连续的序列,
    比如,
    0001
    commit;0002
    rollback;
    0003
    这样在数据库中就不会存在0002这样的数字,
    建议查询最大的,然后+1