首先要有乙個制定流水號規則的表
create
table serial_rul(
id int
primary
keyidentity,--id自增
pre varchar(10) ,--字首,可以是公司標識或者是某產品標識之類的
daterule varchar(8) ,--中間時間串,取當天的年月日(yyyymmmdd)或(yymmdd)
sufwide int --字尾長度,字尾一般是4位以上的數字字串
)
開工…
生成流水號**:
alter proc [dbo].[createserial]
(@serialid int,
@returnvalue varchar(50) output)
asdeclare @pre varchar(10) --流水號字首
declare @mid varchar(10) --流水號日期格式
declare @sufwide int --流水號字尾長度
declare @i int --迴圈使用
declare @suffix varchar(10) --流水號字尾
declare @date
varchar(10) --日期格式
declare @maxno varchar(50) --當前最大流水號
--通過id獲取對飲的流水號格式
begin
select @pre=pre,@mid=daterule,@sufwide=sufwide
from serial_rul
where id=@serialid
--根據年月日的格式資訊轉出當天日期資訊
if @mid = 'yyyymmdd'
begin
select @date=convert(varchar(10),getdate(),112)
endif @mid='yymmdd'
begin
select @date=right (convert(varchar(10),getdate(),112),6)
end--獲取當前表內的最大的流水號
select @maxno=max(編號)
from 訂單表
where 編號 like @pre+@date+'%'
--當天還未產生編號則1開始編號
if (isnull(@maxno,''))=''
begin
select @suffix=convert (varchar(10),convert(int,1))
set @i=1
while @i<@sufwide
begin
set @suffix='0'+@suffix
set @i=@i+1
endset @returnvalue= @pre+@date+@suffix
endelse
--單日已有編號則最大編號字尾的字串+1
begin
set @suffix=convert (varchar(10),convert(int,right(@maxno,@sufwide))+1)
set @i=@sufwide-len(@suffix)
while @i<@sufwide
begin
set @suffix='0'+@suffix
set @i=@i+1
endset @returnvalue= @pre+@date+@suffix
endend
儲存過程生成流水號
格式如a20110915001,第1位寫死a,2 5位為年,6 7位為月,8 9位為日,最後三位為流水號.declare newvalue varchar 12 declare newcode varchar 3 declare oldcode varchar 3 declare oldyearmo...
流水號工單號生成 儲存過程
1.生成格式 工單型別 日期 四位流水號 例如 1101 20100517 1104 儲存過程 create procedure dbo cs spcreateformkey asdeclare currentmaxid char 4 id char 4 begin set nocount on s...
mysql 生成流水號 儲存過程 訂單編號
用儲存過程生成流水號是很常用的,這裡以生成訂單編號的流水號作為示例。新的一天的流水號從1開始,如 今天的訂單編號是cd20130109 00014,下乙個訂單編號將是cd20130109 00015 明天的訂單編號將從cd20130110 00001開始 生成規則 2位字首 年月日 5位流水號 或者...