單號產生器

出自ProgWiki

跳轉到: 導航, 搜尋

用途

程式碼

CREATE FUNCTION [dbo].[GetNewContractNo]
(
)
RETURNS VARCHAR(12)
AS
BEGIN
	-- Declare the return variable here
	DECLARE @ResultVar AS VARCHAR(12);
	DECLARE @now AS DATETIME;
	DECLARE @IDHeader AS VARCHAR(50);
	DECLARE @WhereLike AS VARCHAR(50);
 
	SET @now = GETDATE();
 
	SET @IDHeader = CONVERT(VARCHAR,(@now),112);
--SET @IDHeader='C080624';
	SET @IDHeader = 'C' + SUBSTRING(@IDHeader, 3, LEN(@IDHeader)-2);
--select @IDHeader;
 
	SET @WhereLike = @IDHeader + '%';
 
	SELECT @ResultVar = MAX([ContractNo]) FROM [Contract] WHERE [ContractNo] like @WhereLike;
--	SELECT @ResultVar
 
	IF (@ResultVar IS NULL) 
		BEGIN
                        --當流水號長度為2時, 當天第1張單號的預設值
			SET @ResultVar = @IDHeader + '01';
		END
	ELSE
		BEGIN
                        --這裡的2是流水號長度
			SET @ResultVar = CONVERT(VARCHAR(2),CONVERT(INT,SUBSTRING(@ResultVar,LEN(@IDHeader)+1,2))+1);
			WHILE (LEN(@ResultVar) < 2)
				BEGIN
					SET @ResultVar = '0' + @ResultVar;
				END
			SET @ResultVar = @IDHeader + @ResultVar; 
		END
 
 
--	SELECT @ResultVar;
 
	-- Return the result of the function
	RETURN @ResultVar
END
個人工具
名字空間
變換
動作
導航
分類
其他
技術類News或部落格
工具箱