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
--调用示例
DECLARE @BH CHAR(6)
EXEC P_NEXTBH 'CJ',@BH OUTPUT
SELECT @BH
EXEC P_NEXTBH 'CJ',@BH OUTPUT
SELECT @BH