比如说: 后面加 0001 + 1    
2007-06-21 
编号如下 自动:
200706210001
200706210002
200706210003
 到了下个月 2007-07-01 号  后面的4位。又从 0001 开始
200707010001
200707010002
200707010003 到了下个月 2007-08-01 号  后面的4位。又从 0001 开始
200708010001
200708010002
200708010003怎么写才会效率高??

解决方案 »

  1.   

    CREATE TABLE SY_TABLMAXID
    (
    VAR_DATE VARCHAR(12),
    INT_MAXID INT
    )GOCREATE PROC PRC_GETMAXID
    AS BEGIN
    DECLARE @VAR_MAXVAL VARCHAR(12)
    DECLARE @VAR_DATE VARCHAR(12)
    DECLARE @INT_MAXID INT SET @VAR_DATE=CAST(YEAR(GETDATE()) AS VARCHAR) 
    + LEFT('00' + CAST(MONTH(GETDATE()) AS VARCHAR),2) 
    + LEFT('00' + CAST(DAY(GETDATE()) AS VARCHAR),2) 
    SELECT @INT_MAXID=INT_MAXID WHERE  VAR_DATE=@VAR_DATE
    IF NOT @INT_MAXID IS NULL BEGIN
    SET @INT_MAXID=1
    SET @VAR_MAXVAL=@VAR_DATE + LEFT(CAST(@INT_MAXID AS VARCHAR),4)
    INSERT INTO SY_TABLMAXID (@VAR_DATE,@INT_MAXID)
    END ELSE BEGIN
    SET @INT_MAXID=@INT_MAXID+1
    SET @VAR_MAXVAL=@VAR_DATE + LEFT(CAST(@INT_MAXID AS VARCHAR),4)
    UPDATE SY_TABLMAXID SET VAR_DATE=@VAR_DATE,INT_MAXID=@INT_MAXID WHERE VAR_DATE=@VAR_DATE
    END
    SELECT @VAR_MAXVALEND
      

  2.   

    CREATE TABLE SY_TABLMAXID
    (
    VAR_DATE VARCHAR(12),
    INT_MAXID INT
    )GOCREATE PROC PRC_GETMAXID
    AS BEGIN
    DECLARE @VAR_MAXVAL VARCHAR(12)
    DECLARE @VAR_DATE VARCHAR(12)
    DECLARE @INT_MAXID INT SET @VAR_DATE=CAST(YEAR(GETDATE()) AS VARCHAR) 
    + LEFT('00' + CAST(MONTH(GETDATE()) AS VARCHAR),2) 
    + LEFT('00' + CAST(DAY(GETDATE()) AS VARCHAR),2) 
    SELECT @INT_MAXID=INT_MAXID WHERE  VAR_DATE=@VAR_DATE
    IF NOT @INT_MAXID IS NULL BEGIN
    SET @INT_MAXID=1
    SET @VAR_MAXVAL=@VAR_DATE + LEFT(CAST(@INT_MAXID AS VARCHAR),4)
    INSERT INTO SY_TABLMAXID VALUES(@VAR_DATE,@INT_MAXID)
    END ELSE BEGIN
    SET @INT_MAXID=@INT_MAXID+1
    SET @VAR_MAXVAL=@VAR_DATE + LEFT(CAST(@INT_MAXID AS VARCHAR),4)
    UPDATE SY_TABLMAXID SET VAR_DATE=@VAR_DATE,INT_MAXID=@INT_MAXID WHERE VAR_DATE=@VAR_DATE
    END
    SELECT @VAR_MAXVALEND