自定义函数 生成报单号


CREATE FUNCTION DVT_CODERULE(@businesscode varchar(30),@countitem int)

RETURNS varchar(255)
AS
BEGIN
 -- Declare the return variable here
 DECLARE
  @prefix varchar(10),               --前缀
  @dateform varchar(20),             --日期项
  @countit varchar(20),              --计数项
  @countlength numeric(4,0),         --计算长度
  @suffix varchar(10),               --后缀
  @separatechar varchar(1),          --分隔符
  @result varchar(255),              --返回值
  @leng int;
 
   
 -- 通过业务编码,查询对应的参数   
 SELECT @prefix=PREFIX,@dateform=[DATEFORMAT],@countlength=COUNTLENGTH,
                       @suffix=SUFFIX,@separatechar=SEPARATECHAR
         from TD_CODERULE where BUSINESSCODE=@businesscode
   
     --拼出计数项与计数长度结合后的字串
    select
    @leng = convert(int,@countlength) - len(@countitem)
   
     -- select STUFF(REPLICATE(0,8),6,3,'555') = 00000555
     --STUFF() 用另一子串替换字符串指定位置、长度的子串
     --REPLICATE (character_expression int)返回一个重复character_expression 指定次数的字符串
    
    select @countit = STUFF(REPLICATE(0,convert(int,@countlength)),@leng+1,len(@countitem),convert(varchar(20),@countitem))
   
    --日期项
   
    if(@dateform = 'YYYYMMDD')
      SELECT @dateform = CONVERT(varchar(10), GETDATE(), 112)
    if(@dateform = 'YYYYMM')
      select @dateform = LEFT(CONVERT(varchar(10), GETDATE(), 112),6)
    if(@dateform = 'YYYY')
      select @dateform = LEFT(CONVERT(varchar(10), GETDATE(), 112),4)

     --拼接
     select @result = @prefix + @separatechar + @dateform + @separatechar + @countit + @separatechar + @suffix

 RETURN @result;
END
GO

 

posted @ 2013-07-26 14:43  疯子艾云  阅读(179)  评论(0)    收藏  举报