1,首先在数据库中创建一个存放流水号的表
CREATE TABLE [dbo].[NumSeq] (
[Cate] [varchar] (2) NOT NULL ,
[DateNo] [varchar] (4) NOT NULL ,
[Seq] [int] NULL ,
[CrTime] [datetime] NOT NULL
)
上面的代码中,Cate 字段为流水号的头,可以在下面的存储过程中用参数的方式传入,我的定义是2个字符,这个可以根据具体需要更改
DateNo 字段为获取日期信息
Seq 字段为流水号,但最终生成的流水号是这三个字段的相加
2,创建存储过程
CREATE PROC dpPMT_SGetMaintainSeq
@MaintainCate VARCHAR(2)
AS
--***********************累加编号*************************************************
DECLARE @MaintainNo VARCHAR(12)
IF NOT EXISTS(SELECT
*
FROM
NumSeq
WHERE
Cate=@MaintainCate AND DATEDIFF(DAY,CrTime,GETDATE())=0)
BEGIN
INSERT INTO
NumSeq(Cate,DateNo,Seq)
values(@MaintainCate,RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+
REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE())),0)
END
ELSE
BEGIN
UPDATE
NumSeq
SET
Seq=Seq+1
WHERE
Cate=@MaintainCate AND DateNo=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+
REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE()))
END
--************************组合编号***************************************************************
SELECT
@MaintainNo=Cate+DateNo+REPLICATE('0',6-LEN(Seq))+CONVERT(VARCHAR(6),Seq)
FROM
NumSeq
WHERE
Cate=@MaintainCate AND DateNo=RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+
REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE()))
SELECT @MaintainNo
注:这个存储过程最终输出的结果如:AA071031000001 前面两位是传入的参数,中间四位是年份的后两位和月,最后的六位为6位数字的流水号。您也可以修改上面的存储过程来生成符合您要求的流水号
本文来自:.Net中文社区(www.aspxcs.net) 详细出处参考:http://www.aspxcs.net/HTML/003134963.html
分享到:
相关推荐
本篇文章将深入探讨如何在MyBatis框架中结合MySQL存储过程来生成流水号。 首先,存储过程`GetSerialNo`接受一个输入参数`tsCode`,类型为VARCHAR(50),并返回一个VARCHAR(200)类型的`result`。该过程的主要目的是为...
存储过程实现流水号,可以实现防止并发生成重复的流水号,.net 技术,sql server 数据库编写,可以参考学习哦
在“mysql 流水号 存储过程 附表结构”这个主题中,我们主要探讨如何在MySQL中创建一个存储过程来生成流水号,并结合相关的表结构来实现这一功能。 流水号通常用于为数据库中的记录生成唯一的标识,它们可以是自增...
用于自动生成流水账号的存储过程 有详细的注释
生成并发唯一性流水号的解决方案 ...该解决方案使用了表结构的设计、存储过程的设计和流水号的生成规则三个部分来实现唯一的流水号的生成。同时,该解决方案还进行了并发测试,以验证其可靠性和高效性。
下面将详细介绍SQL Server 2000和DB2中分页存储过程的实现,以及DB2如何自动生成流水号。 首先,让我们看看SQL Server 2000的分页存储过程。在SQL Server 2000中,由于没有内置的OFFSET和FETCH NEXT功能,我们通常...
2. **流水号**:生成流水号通常需要一个全局变量,如原子整型(`AtomicInteger`),以保证在多线程环境中的安全性。初始化原子整型为0,每次生成订单号时自增1,然后取其值作为流水号: ```java AtomicInteger ...
根据当天日期生成流水单号存储过程 格式为 年月日+'0001'
在Java编程中,生成流水号是一项常见的需求,特别是在金融、电商等系统中,流水号作为交易的唯一标识,对于数据的追踪和管理至关重要。在这个场景中,“java生成流水-格式202001270001”指的是一个Java程序,用于...
总的来说,这个资源对于理解如何在.NET环境中结合C#、ASP.NET和SQL数据库生成流水号非常有价值。通过深入研究源代码,你可以学习到数据库设计、并发控制、事务处理和Web应用开发等多个方面的知识。同时,这也可以...
建表sql、生成流水号存储过程
根据给定的信息,本文将详细解释如何通过 SQL 存储过程自动生成流水号,并提供一个实际的示例来展示这一过程。流水号通常用于数据库记录的唯一标识,尤其是在需要跟踪交易或事务的情况下。 ### 一、理解流水号的...
在.NET开发中,生成流水号是一项常见的需求,例如在订单系统、会员系统或者任何需要唯一标识符的场景中。流水号通常需要具有唯一性、可读性和一定的排序性。本资源提供了一个C#语言实现流水号生成的案例,并且包含了...
本资源提供了一种.NET平台下生成流水号的源代码实现,同时也结合了SQL Server数据库的使用,适用于SQL Server 2005/2008版本,并且兼容Visual Studio 2008/2010开发环境。 首先,生成流水号的主要目标是确保每个...
这种方法能够生成连续的流水号编码,但可能会在多用户同时操作时产生冲突。为了避免这种冲突,可以在保存之前进行检查或使用其他机制确保唯一性。 ### SQL存储过程应用 存储过程`PWMS_GetMaxNo`的具体实现未在代码...
在当前互联网环境下,为了确保每一笔交易都有一个唯一的标识,生成流水号或订单号是必不可少的环节。流水号与订单号的区别主要在于用途不同,流水号一般用于系统内部管理,而订单号是面向客户的,便于用户查询和确认...
标签“流水号”表明该程序的核心功能是生成流水号,“自动”意味着这个过程是自动化的,无需人工干预。“delphi源码”则表示这个程序的源代码是用Delphi编写的,对于开发者来说,这意味着他们可以查看、学习甚至修改...
二维码生成和业务流水号生成是IT领域中常见的技术应用,特别是在移动支付、物联网以及数据跟踪等领域。二维码(Quick Response Code)是一种二维条形码,能够存储大量的信息,如网址、文本、图片等,并且可以通过...
存储过程内部先获取当前日期的年月部分,然后结合前缀调用`Hp_Test_GetNo`函数,生成流水号并返回。 在实际应用中,除了上述方法,还可以考虑其他策略来生成流水号,比如使用子表存储未分配的流水号,每次分配时从...