55.使用编号表生成流水号的案例

本文介绍了一个使用SQL Server实现的自动编号生成系统。该系统通过存储过程在数据库中生成唯一编号,适用于多种业务场景,如采购订单、进仓单等。每次调用存储过程将返回一个新的编号,确保了编号的唯一性和连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--编号表
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 --新编号
AS
BEGIN 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值