--exec [zkmc_public_getquoreceivedocsn] 'sp'
--建立人:lj
--標籤拆分的sn
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
SQL生成流水號
經過了幾次的測試終於成功了 declare year int,month int,day int,temp no varchar 12 needno varchar 4 no varchar 20 number varchar 50 randno varchar 50 nu varchar 10 s...
sql 生成流水號
mysql生成流水號 select lpad ifnull max substring business order code,3,4 1,1 4,0 as waternumber from bh customer info business order code的值為前面兩位英文,後面四位數字,例...
SQL系列流水號
實現效果 流水號由三部分組成,流水號頭部 日期 產生的序號 流水號序號產生按照每天乙個週期來算,即每天序號都由0開始 設計原理 我用乙個專門的表記錄流水號的相關資訊,例如流水號頭,流水號名稱,當前流水號的序號等等,如下 編號表對應的實體表 如果tb bh儲存的日期和當前日期相同,則從tb bh的xu...