查表法按日期生成流水号 mssql

来源:互联网 发布:蒙古国 知乎 编辑:程序博客网 时间:2024/04/29 20:04
--以下代码生成的编号长度为12,前6位为日期信息,格式为YYMMDD,后6位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(6),GETDATE(),12)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(12)ASBEGINDECLARE @dt CHAR(6)SELECT @dt=dt FROM v_GetDateRETURN(SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK)WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),col int)--插入资料INSERT tb(col) VALUES(1)INSERT tb(col) VALUES(2)INSERT tb(col) VALUES(3)DELETE tb WHERE col=3INSERT tb(col) VALUES(4)INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)--显示结果SELECT * FROM tb/*--结果BH           col ------------------- ----------- 050405000001  1050405000002  2050405000003  4050405000004  14--*/

原创粉丝点击