服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - 小系统单据自动生成存储过程

小系统单据自动生成存储过程

2019-11-27 16:32MSSQL教程网 Sql Server

此处判断有两种方法:一种是根据传入6位日期判断;另一种根据单据创建日期字段(前提:表有创建时间字段)

代码如下:


create table [order] 

code varchar(50), 
createtime datetime 


--应用 usp_ordernumbergenerate(@prefix = 'PRC100701') 
--传入前缀 大类+单据编码+6位日期 
--获取当日该类单据最大流水号(需按日归零) 
--此处判断有两种方法:一种是根据传入6位日期判断;另一种根据单据创建日期字段(前提:表有创建时间字段) 
create procedure usp_OrderNumberGenerate 
@prefix varchar(50) 
as 
declare @count int 
declare @midcode varchar(3) 
declare @Digits int = 3 
declare @orderNumber varchar(50) 

select @count = COUNT(*) from [order] where DATEDIFF(day, createtime, GETDATE()) = 0 
if(@count = 0) --当日无单据情况 流水号为001 
--print @count 
select @orderNumber = @prefix + '001' 
else --当日有单据情况 最大流水号+1 
select @midcode = max(substring(midcode, 10, 3)) + 1 
from [order] 
where DATEDIFF(day, createtime, GETDATE()) = 0 

select @orderNumber =@prefix + RIGHT(REPLICATE('0', @Digits) 
+ CAST(@midcode as VARCHAR), @Digits) 

print @ordernumber

延伸 · 阅读

精彩推荐