首先在數(shù)據(jù)庫中創(chuàng)建一個存放流水號的表
CREATE TABLE [dbo].[NumSeq] (
[Cate] [varchar] (2) NOT NULL ,
[DateNo] [varchar] (4) NOT NULL ,
[Seq] [int] NULL ,
[CrTime] [datetime] NOT NULL
)
上面的代碼中,Cate 字段為流水號的頭,可以在下面的存儲過程中用參數(shù)的方式傳入,我的定義是2個字符,這個可以根據(jù)具體需要更改
DateNo 字段為獲取日期信息
Seq 字段為流水號,但最終生成的流水號是這三個字段的相加
創(chuàng)建存儲過程
CREATE PROC dpPMT_SGetMaintainSeq
@MaintainCate VARCHAR(2)
AS
--***********************累加編號*************************************************
DECLARE @MaintainNo VARCHAR(12)
IF NOT EXISTS(SELECT
*
FROM
NumSeq
WHERE
Cate=@MaintainCate AND DATEDIFF(DAY,CrTime,GETDATE())=0)
BEGIN
INSERT INTO
NumSeq(Cate,DateNo,Seq)
values(@MaintainCate,RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE())),0)
END
ELSE
BEGIN
UPDATE
NumSeq
SET
Seq=Seq+1
WHERE
Cate=@MaintainCate AND DateNo=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE()))
END
--************************組合編號***************************************************************
SELECT
@MaintainNo=Cate+DateNo+REPLICATE('0',6-LEN(Seq))+CONVERT(VARCHAR(6),Seq)
FROM
NumSeq
WHERE
Cate=@MaintainCate AND DateNo=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE()))
SELECT @MaintainNo
這個存儲過程最終輸出的結(jié)果如:AA071031000001 前面兩位是傳入的參數(shù),中間四位是年份的后兩位和月,最后的六位為6位數(shù)字的流水號。您也可以修改上面的存儲過程來生成符合您要求的流水號。
該文章在 2011/3/3 17:04:05 編輯過