獨立編號表,生成編號

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章