SQL Server序列号的获取
建表:

1 USE [JX_IMS_CPK] 2 GO 3 4 SET ANSI_NULLS ON 5 GO 6 7 SET QUOTED_IDENTIFIER ON 8 GO 9 10 CREATE TABLE [dbo].[WCS_Seq]( 11 [SeqType] [int] NOT NULL, 12 [SeqVal] [bigint] NOT NULL, 13 [SeqTime] [datetime] NOT NULL 14 ) ON [PRIMARY] 15 GO 16 17 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'类型(1-任务单号)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq', @level2type=N'COLUMN',@level2name=N'SeqType' 18 GO 19 20 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq', @level2type=N'COLUMN',@level2name=N'SeqVal' 21 GO 22 23 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq', @level2type=N'COLUMN',@level2name=N'SeqTime' 24 GO 25 26 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序列表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'WCS_Seq' 27 GO
获取序列:

1 USE [JX_IMS_CPK] 2 GO 3 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 ALTER PROCEDURE [dbo].[WCS_GetTaskCode] 9 @O_TaskCode VARCHAR(50)=NULL OUTPUT 10 --获取【任务号】 11 AS 12 BEGIN 13 DECLARE @V_SeqType INT=1, --类型 14 @SeqCount INT, 15 @NowTime DATETIME=CAST(GETDATE() AS DATE), 16 @SeqVal BIGINT, 17 @SeqTime DATETIME, 18 @NextVal BIGINT=1; 19 20 SELECT @SeqCount = COUNT(1) 21 FROM WCS_Seq a 22 WHERE a.SeqType=@V_SeqType; 23 24 IF @SeqCount = 0 25 BEGIN 26 INSERT INTO WCS_Seq 27 SELECT @V_SeqType,@NextVal,@NowTime; 28 SET @O_TaskCode=RIGHT(CONVERT(VARCHAR(50),@NowTime,112),6)+RIGHT('0000'+CAST(@NextVal AS VARCHAR(4)),4); 29 SELECT @O_TaskCode; 30 RETURN; 31 END; 32 33 SELECT TOP 1 34 @SeqVal = a.SeqVal , 35 @SeqTime = a.SeqTime 36 FROM WCS_Seq a 37 WHERE a.SeqType=@V_SeqType; 38 39 IF @SeqTime = @NowTime 40 SET @NextVal = @SeqVal + 1; 41 ELSE 42 SET @NextVal = 1; 43 44 UPDATE a 45 SET a.SeqVal = @NextVal , 46 a.SeqTime = @NowTime 47 FROM WCS_Seq a 48 WHERE a.SeqVal = @SeqVal 49 AND a.SeqType=@V_SeqType; 50 51 SET @O_TaskCode=RIGHT(CONVERT(VARCHAR(50),@NowTime,112),6)+RIGHT('0000'+CAST(@NextVal AS VARCHAR(4)),4); 52 END;
使用方法:

1 USE [JX_IMS_CPK] 2 GO 3 4 DECLARE @return_value int, 5 @O_TaskCode varchar(50) 6 7 EXEC @return_value = [dbo].[WCS_GetTaskCode] 8 @O_TaskCode = @O_TaskCode OUTPUT 9 10 SELECT @O_TaskCode as N'@O_TaskCode' 11 12 SELECT 'Return Value' = @return_value 13 14 GO
结果:
2004080008
0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?