流水號生成儲存過程(sqlserver版)

2021-08-17 01:13:47 字數 1843 閱讀 4557

首先要有乙個制定流水號規則的表

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位流水號 或者...