怎样生成这样的流水号
11111111-111112013010101
11111111-111112013010102
11111111-111112013010103
11111111-11111201301010...
或者
11111111-11111W513010101
11111111-11111W513010102
11111111-11111W513010103
11111111-11111W51301010..作为主键,所以不能重复
删除后,得从头开始
比如:11111111-11111W513010102
下次新增时从11111111-11111W513010101开始
在WebFrom上点新增后生成
请高手帮忙

解决方案 »

  1.   

    前面弄一个前缀
    比如 11111111-11111W后面弄一个基数 比如 50005000然后for循环 给数字+1
    然后和前缀相加 返回就OK了
      

  2.   

    我想写一个通用的,因为不止生成一种,是多种;
    不过前几位不变:
    怎样生成这样的流水号
    11111111-111112013010101
    11111111-111112013010102
    11111111-111112013010103
    11111111-11111201301010...
    或者
    11111111-11111W513010101
    11111111-11111W513010102
    11111111-11111W513010103
    11111111-11111W51301010..是写个存储过程好呢,函数写个clsss或方法
      

  3.   

    oracle里可以建个sequence,初始值为513010101,然后递增就可以了:
      SELECT '11111111-11111W'||  --当前时间
             TO_CHAR(COMMON_SEQ.NEXTVAL)
             FROM DUAL;但不知道你说的删除是什么意思
    比如此时有
    11111111-11111W513010101
    11111111-11111W513010102
    11111111-11111W513010103这时候删除11111111-11111W513010102,然后你想从什么地方开始??
      

  4.   

    如果删除第二条记录,比如:
    11111111-11111W513010101
    11111111-11111W513010102
    11111111-11111W513010103
    中的11111111-11111W513010102
    下次点新增时要从11111111-11111W513010101开始
      

  5.   

    CREATE OR REPLACE FUNCTION NEW_SERIAL (ss in varchar2)
    RETURN VARCHAR2 IS
      RESULT VARCHAR2(26);
    BEGIN
      SELECT 11111111-11111||ss||  
             TO_CHAR(test_SEQ.NEXTVAL, 'fm000000')
             INTO RESULT
             FROM DUAL;
      RETURN(RESULT);
    END NEW_SERIAL;test_SEQ可以根据需要初始化一下!
      

  6.   

    调用的时候:
    select NEW_CARD_AUTH_SERIAL('w513') from dual;
      

  7.   

    Object_Delusion(梦飞翔) ( ) 信誉:100  2007-08-27 17:41:14  得分: 0  
     
     
       如果删除第二条记录,比如:
    11111111-11111W513010101
    11111111-11111W513010102
    11111111-11111W513010103
    中的11111111-11111W513010102
    下次点新增时要从11111111-11111W513010101开始
      
     
    你这样做,如果加到3的时候不是会冲突了吗?干吗一定要从原来的开始呢?