使用編號表生成流水號的示例 sql

2021-09-08 03:32:08 字數 1262 閱讀 5623

--編號表

create table tb_no(

name char(2) primary key,               --編號種類的名稱

head nvarchar(10) not null default '',  --編號的字首

currentno int not null default 0,       --當前編號

bhlen int not null default 6,           --編號數字部分長度

description nvarchar(50))               --編號種類說明

insert tb_no select 'cg','cg',0,4,n'採購訂單'

union  all   select 'cj','cj',0,4,n'採購進貨'

union  all   select 'jc','jc',0,4,n'進倉單'

union  all   select 'zc','zc',0,4,n'轉倉單'

union  all   select 'cc','cc',0,4,n'出倉單'

go--獲取新編號的儲存過程

create proc p_nextbh

@name char(2),           --編號種類

@bh nvarchar(20) output --新編號

asbegin tran

update tb_no with(rowlock) set

@bh=head+right(power(10,bhlen)+currentno+1,bhlen),

currentno=currentno+1

where name=@name

commit tran

go--獲取 cj 的新編號

declare @bh char(6)

exec p_nextbh 'cj',@bh out

select @bh

--結果: cj0001

exec p_nextbh 'cj',@bh out

select @bh

--結果: cj0002

go--獲取 cc 的新編號

declare @bh char(6)

exec p_nextbh 'cc',@bh out

select @bh

--結果: cc0001

exec p_nextbh 'cc',@bh out

select @bh

--結果: cc0002

使用編號表按日期生成流水號的示例 sql

編號表 create table tb no name char 2 not null,編號種類的名稱 days int not null,儲存的是該種編號那一天的當前編號 head nvarchar 10 not null default 編號的字首 currentno int not null ...

SQL生成 日期 流水號 的編號

以下 生成的編號長度為12,前6位為日期資訊,格式為yymmdd,後6位為流水號。建立得到當前日期的檢視 create view v getdate asselect dt convert char 6 getdate 12 go 得到新編號的函式 create function f nextbh ...

mysql 生成流水號 儲存過程 訂單編號

用儲存過程生成流水號是很常用的,這裡以生成訂單編號的流水號作為示例。新的一天的流水號從1開始,如 今天的訂單編號是cd20130109 00014,下乙個訂單編號將是cd20130109 00015 明天的訂單編號將從cd20130110 00001開始 生成規則 2位字首 年月日 5位流水號 或者...