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

用存儲過程:

-- =============================================
-- 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章