SQL脚本实现单据编号按规则自动生成!

用户要求:申请单的单据编号自动生成:格式为WCYC+年+月+日+001,第一张为01,第二张为02,。。。以此内推;
 

解决方法:

1、自定义函数:

alter FUNCTION [dbo].[getno]()  
RETURNS char(15)  
AS  
BEGIN  
declare @id varchar(50),
        @i int,
        @billcode varchar(20)
        
   select top 1 @id= rtrim(ltrim(billcode))
   from dbo.sqUseCar
   where SUBSTRING(billcode,5,8)= convert(varchar(8),GETDATE(),112)  
   order by billcode desc
   
      if @@rowcount=0   
      begin
      set @billcode = 'WCYC'+ convert(varchar(8),GETDATE(),112)+'001'
      Return  @billcode
      end
   else
      begin
   set @i= right(@id,3)+1
   set @id = @i

   set @billcode = 'WCYC'+ convert(varchar(8),GETDATE(),112)+right('000'+@id ,3 )
      end
      Return @billcode
END

SQL脚本实现单据编号按规则自动生成!_第1张图片

用存储过程:

-- =============================================
-- Author:        <阿霂>
-- Create date: <2019-07-31>
-- Description:    <外协用车申请单号自动生成>
-- =============================================
ALTER PROCEDURE [dbo].[GetBillCode]
         @FunctionCode        varchar(10),
         @cReturn             varchar(100) output
AS
BEGIN
    declare @id varchar(50),
        @i int,
        @billcode varchar(20)
        
   select top 1 @id= rtrim(ltrim(billcode))
   from dbo.sqUseCar
   where SUBSTRING(billcode,5,8)= convert(varchar(8),GETDATE(),112)  
   order by billcode desc
   
      if @@rowcount=0   
      begin
      set @billcode = 'WCYC'+ convert(varchar(8),GETDATE(),112)+'001'
      select @cReturn =  @billcode
      end
   else
      begin
   set @i= right(@id,3)+1
   set @id = @i

   set @billcode = 'WCYC'+ convert(varchar(8),GETDATE(),112)+right('000'+@id ,3 )
         select @cReturn = @billcode
      end

END

 

你可能感兴趣的:(SQL)