SQL Server數據庫流水號的使用方法詳解
SQL Server數據庫流水號的使用方法是本文我們主要要介紹的內容,這段時間開發,又涉及到使用流水號功能。不同的條件,使用二種前綴。后面的流水號還是要流水的功能,要求再加上位數已經有所變化了。為了解決此問題,只有添加另外一個自定義函數在SQL中。
改寫如下,可參考:
- udf_SeriesNumber
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE FUNCTION [dbo].[udf_SeriesNumber]
- (
- @Number NVARCHAR(12), --原來的值
- @Digit INT --流水號的位數
- )
- RETURNS NVARCHAR(100)
- AS
- BEGIN
- DECLARE @ReturnValue NVARCHAR(100)
- IF (@Number IS NULL)
- SET @ReturnValue = REPLICATE('0', @Digit - 1) + '1'
- ELSE
- BEGIN
- DECLARE @nbr NVARCHAR(6)
- SET @nbr = CONVERT(NVARCHAR,(CONVERT(INT, RIGHT(@Number, @Digit)) + 1))
- SET @nbr = REPLICATE('0', @Digit - LEN(@nbr)) + @nbr
- SET @ReturnValue = @nbr
- END
- RETURN @ReturnValue
- END
接下來,就可以實現會議室預的的會議流水號功能,也許以后又來一個流水號的,還是使用上面的自定義函數。有好幾個會議室,而第一個會議室是一個虛擬會議室,只能作為測試使用,其余的會議室全作為正式的會議室供預定。這些預定的出來的流水號需要區分,虛擬的會議流水號如下:#000001,#000002,#000003,...,#999999。而正式的會議流水號,如:M000001,M000002,M000003,...,M999999。
下面的程序是產生流水號的實現功能:
- udf_GetMeetingNumber
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE FUNCTION [dbo].[udf_GetMeetingNumber]
- (
- @MeetingRoomId SMALLINT
- )
- RETURNS NVARCHAR(20)
- AS
- BEGIN
- --宣告兩個變量,一個是流水號的前綴,初始化其值。另個是將保存最新的會議號碼。
- DECLARE @Prefixion NVARCHAR(2) = 'M', @LastMeetingNumber NVARCHAR(20)
- IF (@MeetingRoomId = 1)
- BEGIN
- --如果是虛擬的會議室,去會議室預定的記錄表,找到最新的會議號碼
- SELECT TOP 1 @LastMeetingNumber = [Meeting_Number] FROM [dbo].[MeetingRoomBooking] WHERE [MeetingRoomId] = @MeetingRoomId ORDER BY [MeetingRoomBookingId] DESC
- --設定前綴
- SET @Prefixion = '#'
- END
- ELSE
- --如果是其它的會議室,找到最新的會議號碼
- SELECT TOP 1 @LastMeetingNumber = [Meeting_Number] FROM [dbo].[MeetingRoomBooking] WHERE [MeetingRoomId] <> 1 ORDER BY [MeetingRoomBookingId] DESC
- --結合上面的流水號產生的自定義函數,與前綴組合,得到流水號。產生6位的流水號
- RETURN @Prefixion + [dbo].[udf_SeriesNumber] (@LastMeetingNumber,6)
- END
關于SQL Server數據庫中流水號的使用方法就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】