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