用戶要求:申請單的單據編號自動生成:格式爲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