?? 5.3.2 融合了補號處理的編號生成處理示例.sql
字號:
--1.融合了補號處理的流水號編號處理
--下面是使用補號法生成流水編號的用戶定義函數,生成的編號總長度為8位,以BH開頭,其余6位為流水號。
--得到新編號的函數
CREATE FUNCTION f_NextBH()
RETURNS char(8)
AS
BEGIN
DECLARE @r char(8)
SELECT @r='BH'+RIGHT(1000001+MIN(BH),6)
FROM(
SELECT BH=RIGHT(BH,6) FROM tb WITH(XLOCK,PAGLOCK)
UNION ALL SELECT 0
)a WHERE NOT EXISTS(
SELECT * FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH='BH'+RIGHT(1000001+a.BH,6))
RETURN(@r)
END
GO
--在表中應用函數
CREATE TABLE tb(
BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)
GO
/*==================================================*/
--2.融合了補號處理的日期編號處理
--下面是使用補號法生成日期編號的用戶定義函數,生成的編號總長度為12,前6位為日期信息,格式為YYMMDD,后6位為流水號。
--創建得到當前日期的視圖
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(6),GETDATE(),12)
GO
--得到新編號的函數
CREATE FUNCTION f_NextBH()
RETURNS char(12)
AS
BEGIN
DECLARE @dt CHAR(6),@r char(12)
SELECT @dt=dt FROM v_GetDate
SELECT @r=@dt+RIGHT(1000001+MIN(BH),6)
FROM(
SELECT BH=RIGHT(BH,6) FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%'
UNION ALL SELECT 0
)a WHERE NOT EXISTS(
SELECT * FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%'
AND BH=@dt+RIGHT(1000001+a.BH,6))
RETURN(@r)
END
GO
--在表中應用函數
CREATE TABLE tb(
BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -