sql server 按照日期自动生成单据编号的函数,格式为##08080001,##表示打头的单据字符,然后是年月和流水编号。
传入的参数为单据的打头字符和生成单据的日期
一般的调用格式为dbo.GetCostBillID('HP',getdate())

sql server 按照日期自动生成单据编号的函数--按单号和年月获取单据的编号
sql server 按照日期自动生成单据编号的函数
CREATE FUNCTION GetCostBillID(@headStr nvarchar(10),@date datetime)
sql server 按照日期自动生成单据编号的函数
RETURNS nvarchar(50)
sql server 按照日期自动生成单据编号的函数
BEGIN 
sql server 按照日期自动生成单据编号的函数
declare  @oid2 nvarchar(50)
sql server 按照日期自动生成单据编号的函数
declare @oid nvarchar(50)
sql server 按照日期自动生成单据编号的函数
declare @month nvarchar(2)
sql server 按照日期自动生成单据编号的函数
declare @year nvarchar(2)
sql server 按照日期自动生成单据编号的函数
declare @ym nvarchar(4)
sql server 按照日期自动生成单据编号的函数
set @month=month(@date)
sql server 按照日期自动生成单据编号的函数
if len(@month)=1
sql server 按照日期自动生成单据编号的函数    
set @month='0'+@month --使月为两位长
sql server 按照日期自动生成单据编号的函数
set @year=right(convert(nvarchar,year(@date)),2)
sql server 按照日期自动生成单据编号的函数
set @ym=@year+@month --组成年月字符
sql server 按照日期自动生成单据编号的函数

sql server 按照日期自动生成单据编号的函数
--格式CB0808001
sql server 按照日期自动生成单据编号的函数
if exists(select * from CostBill)
sql server 按照日期自动生成单据编号的函数
begin
sql server 按照日期自动生成单据编号的函数    
select  top 1 @oid2=CostBillID from CostBill order by id desc --获取最后一条的单据编号,一定要有id,并且自动生成的,倒排序
sql server 按照日期自动生成单据编号的函数
end
sql server 按照日期自动生成单据编号的函数
else 
sql server 按照日期自动生成单据编号的函数
begin
sql server 按照日期自动生成单据编号的函数    
set @oid2=@headStr+@ym+'0000' --没有记录是默认为今天
sql server 按照日期自动生成单据编号的函数
end
sql server 按照日期自动生成单据编号的函数
sql server 按照日期自动生成单据编号的函数
--订单不是本月的,重新开始一个新的订单流水号
sql server 按照日期自动生成单据编号的函数
if convert(nvarchar,left(@oid2,6))<>@headStr+@ym
sql server 按照日期自动生成单据编号的函数
begin
sql server 按照日期自动生成单据编号的函数
--用本月的年月号开始
sql server 按照日期自动生成单据编号的函数
    set @oid2=@headStr+@ym+'0000'
sql server 按照日期自动生成单据编号的函数
end
sql server 按照日期自动生成单据编号的函数
sql server 按照日期自动生成单据编号的函数
declare @str nvarchar(50--临时单号
sql server 按照日期自动生成单据编号的函数

sql server 按照日期自动生成单据编号的函数
set @str=convert(nvarchar,(convert(int,right(@oid2,4))+1)) --订单号加一
sql server 按照日期自动生成单据编号的函数
while (4-len(@str)>0)
sql server 按照日期自动生成单据编号的函数
begin
sql server 按照日期自动生成单据编号的函数     
set @str='0'+@str    
sql server 按照日期自动生成单据编号的函数
end
sql server 按照日期自动生成单据编号的函数
set @oid2=@headStr+@ym+@str
sql server 按照日期自动生成单据编号的函数
--print @oid2
sql server 按照日期自动生成单据编号的函数

sql server 按照日期自动生成单据编号的函数
--如果该订单好已经存在,则重新获取
sql server 按照日期自动生成单据编号的函数
while exists(select * from CostBill where CostBillID=@oid2)
sql server 按照日期自动生成单据编号的函数
begin
sql server 按照日期自动生成单据编号的函数    
sql server 按照日期自动生成单据编号的函数    
set @str=convert(nvarchar,(convert(int,right(@oid2,4))+1)) --订单号加一
sql server 按照日期自动生成单据编号的函数
    while (4-len(@str)>0)
sql server 按照日期自动生成单据编号的函数    
begin
sql server 按照日期自动生成单据编号的函数         
set @str='0'+@str    
sql server 按照日期自动生成单据编号的函数    
end
sql server 按照日期自动生成单据编号的函数    
set @oid2=@headStr+@ym+@str
sql server 按照日期自动生成单据编号的函数
--    print @oid2
sql server 按照日期自动生成单据编号的函数
end
sql server 按照日期自动生成单据编号的函数
sql server 按照日期自动生成单据编号的函数
set @oid=convert(nvarchar,@oid2)
sql server 按照日期自动生成单据编号的函数
--print 'HP'+convert(nvarchar,year(getdate()))+convert(nvarchar,month(getdate()))+@str
sql server 按照日期自动生成单据编号的函数

sql server 按照日期自动生成单据编号的函数
RETURN @oid
sql server 按照日期自动生成单据编号的函数
END
sql server 按照日期自动生成单据编号的函数
sql server 按照日期自动生成单据编号的函数

相关文章:

  • 2022-12-23
  • 2021-09-24
  • 2021-09-25
  • 2022-12-23
  • 2021-07-30
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-29
  • 2021-12-29
  • 2021-08-17
  • 2021-11-29
  • 2021-10-06
相关资源
相似解决方案