1. 程式人生 > >SQL自定義自增列(通用儲存過程)

SQL自定義自增列(通用儲存過程)

ALTER PROCEDURE GetOrderCode
    (
      @NO VARCHAR(MAX) , --字首
      @TableName VARCHAR(MAX) , --表名
      @ColumnIDName VARCHAR(300) --表中自增列的欄位
    )
AS 
    BEGIN
        DECLARE @MaxId INT 
        DECLARE @sql NVARCHAR(MAX)
        DECLARE @Parm NVARCHAR(MAX)
        DECLARE @OrderCode VARCHAR(MAX)
        
        SET @sql = 'SELECT @MaxID = ' + @ColumnIDName + ' FROM  ' + @TableName  --取到表中最大的ID(系統自增的)
        
        SET @Parm = N'@MaxID int OUTPUT'
        EXECUTE sys.sp_executesql @sql, @Parm, @MaxID = @MaxID OUTPUT 
       
        SELECT  @OrderCode = ( @NO + '-' + CONVERT(VARCHAR(8), GETDATE(), 112)
                               + '-' + RIGHT('0000'
                                             + CAST(( @MaxID + 1 ) AS VARCHAR(50)),
                                             4) )
        SELECT  @OrderCode
    END