sql 获取最大的流水号
来源:互联网 发布:八门神器ios源码 编辑:程序博客网 时间:2024/05/21 09:34
--修改时间:11.23
--exec [zkmc_public_GetQuoReceiveDocSn] 'sp'
--创建人:lj
--标签拆分的sn
--修改时间:11.23
alter proc [dbo].[zkmc_public_GetQuoReceiveDocSn]
(@headStr nvarchar(10))
as
BEGIN
declare @date datetime
set @date = getdate()
declare @oid2 nvarchar(50)
declare @oid nvarchar(50)
declare @month nvarchar(2)
declare @year nvarchar(4)
declare @ym nvarchar(6)
declare @length int
set @month=month(@date)
if len(@month)=1
set @month='0'+@month --使月为两位长
declare @day nvarchar(2)
set @day = day(@date)
if len(@day) =1
set @day = '0' + @day --日
set @year=right(convert(nvarchar,year(@date)),2)
set @ym=@year+@month +@day --组成年月字符
print @ym
set @length =len(@headStr)
--格式Q200908001
if exists(select * from t_ReceiveDocT where sn like '%' + @headStr+ @ym +'%' )
begin
declare @strsql nvarchar(max)
set @strsql=' select top 1 @oid3=sn from t_ReceiveDocT
where sn like ''' + @headStr+ @ym +'%'' order by id desc '
print @strsql
exec sp_executesql @strsql,N'@oid3 nvarchar(50) output',@oid2 output
print @oid2
--获取最后一条的单据编号,一定要有id,并且自动生成的,倒排序
end
else
begin
set @oid2=@headStr+@ym+'000' --没有记录是默认为今天
end
print 'oid: '+ @oid2
--订单不是本月的,重新开始一个新的订单流水号
if convert(nvarchar,substring(@oid2,5,2)) <>@month
begin
--用本月的年月号开始
set @oid2=@headStr+@ym+'000'
print @oid2
end
declare @str nvarchar(50) --临时单号
set @str=convert(nvarchar,(convert(int,substring(@oid2,9,3))+1)) --订单号加一
print 'dfds' + @str
while (3-len(@str)>0)
begin
set @str='0'+@str
end
set @oid2=@headStr+@ym+@str
--print '---'+@oid2
--如果该订单好已经存在,则重新获取
while exists(select * from t_ReceiveDocT where Sn=@oid2)
begin
set @str=convert(nvarchar,(convert(int,substring(@oid2,9,3))+1)) --订单号加一
while (3-len(@str)>0)
begin
set @str='0'+@str
end
set @oid2=@headStr+@ym+@str
-- print @oid2
end
set @oid=convert(nvarchar,@oid2)
--print 'Q'+convert(nvarchar,year(getdate()))+convert(nvarchar,month(getdate()))+@str
select @oid
END
--exec [zkmc_public_GetQuoReceiveDocSn] 'sp'
--创建人:lj
--标签拆分的sn
--修改时间:11.23
alter proc [dbo].[zkmc_public_GetQuoReceiveDocSn]
(@headStr nvarchar(10))
as
BEGIN
declare @date datetime
set @date = getdate()
declare @oid2 nvarchar(50)
declare @oid nvarchar(50)
declare @month nvarchar(2)
declare @year nvarchar(4)
declare @ym nvarchar(6)
declare @length int
set @month=month(@date)
if len(@month)=1
set @month='0'+@month --使月为两位长
declare @day nvarchar(2)
set @day = day(@date)
if len(@day) =1
set @day = '0' + @day --日
set @year=right(convert(nvarchar,year(@date)),2)
set @ym=@year+@month +@day --组成年月字符
print @ym
set @length =len(@headStr)
--格式Q200908001
if exists(select * from t_ReceiveDocT where sn like '%' + @headStr+ @ym +'%' )
begin
declare @strsql nvarchar(max)
set @strsql=' select top 1 @oid3=sn from t_ReceiveDocT
where sn like ''' + @headStr+ @ym +'%'' order by id desc '
print @strsql
exec sp_executesql @strsql,N'@oid3 nvarchar(50) output',@oid2 output
print @oid2
--获取最后一条的单据编号,一定要有id,并且自动生成的,倒排序
end
else
begin
set @oid2=@headStr+@ym+'000' --没有记录是默认为今天
end
print 'oid: '+ @oid2
--订单不是本月的,重新开始一个新的订单流水号
if convert(nvarchar,substring(@oid2,5,2)) <>@month
begin
--用本月的年月号开始
set @oid2=@headStr+@ym+'000'
print @oid2
end
declare @str nvarchar(50) --临时单号
set @str=convert(nvarchar,(convert(int,substring(@oid2,9,3))+1)) --订单号加一
print 'dfds' + @str
while (3-len(@str)>0)
begin
set @str='0'+@str
end
set @oid2=@headStr+@ym+@str
--print '---'+@oid2
--如果该订单好已经存在,则重新获取
while exists(select * from t_ReceiveDocT where Sn=@oid2)
begin
set @str=convert(nvarchar,(convert(int,substring(@oid2,9,3))+1)) --订单号加一
while (3-len(@str)>0)
begin
set @str='0'+@str
end
set @oid2=@headStr+@ym+@str
-- print @oid2
end
set @oid=convert(nvarchar,@oid2)
--print 'Q'+convert(nvarchar,year(getdate()))+convert(nvarchar,month(getdate()))+@str
select @oid
END
0 0
- sql 获取最大的流水号
- SQL:查询最大的流水号,一直显示的最大流水号是9,但是数据库中流水号明明最大的不是9.
- sql脚本获取流水账号的函数
- 彻底解决Ms sql server 2000中的最大流水号的生成问题
- .net通用获取流水号最大编号方法
- 获取流水号
- SQL生成流水号
- SQL生成流水号
- sql 生成流水号
- SQL流水号
- 解决SQLServer最大流水号的两个好方法
- SQL流水帐号的生成
- SQL流水帐号的生成
- SQL流水帐号的生成
- 获取一个连续不重复的流水号
- SQL自动生成流水号
- SQL流水号生成语句
- 使用SQL创建流水号
- git push用法和常见问题分析
- Android设计模式--适配器模式
- 安卓使用stickyGridHeader实现数据分组
- Xcode 插件管理
- 堆排序
- sql 获取最大的流水号
- 仿微信/支付宝支付密码界面htm
- 数据处理中使用的各种熵
- 3D视频质量评价PQM(Perceptual Quality Metric)算法
- 使用storyboard,设置tab bar Item的选中图片(selected Image)
- linux下查看mysql binlog日志
- Android MVP框架MVPro的使用和源码分析
- ”U盘门“你看好了吗?
- XMLHttpRequest