zoukankan      html  css  js  c++  java
  • 一种简单产生流水号的方法

    最近做项目在做到工单处理的时候,工单的流水号需要自动产生,找了好多方法,都有点麻烦,并且并发性都难以控制,工单号的格式要求是:单的标识+年月日+当日流水号(如:No.20080808001,No.20080808002),前面的都好处理,关键就是处理当日流水号的问题,用户一点创建单马上就要出现单号,所以自己想了种比较简单的方法来实现每天流水号的产生,产生流水号的方法很简单,但是也没有很好的并发性处理,创建时使用的单号很可能已经别别人抢先使用了,所以我在保存单的时候再做一次检查,如果单号已经别使用那么就重新生成一个单号,保存完成后将这个单号返回给用户,这样就基本几解决了工单号的产生问题了

    表格如下:

    表名(Bill)

    字段名称 字段意义
    Id 标识
    No 流水号
    Title 工单标题
    CreateTime 建单时间

    为了简单又能说明问题,就这么多字段,那么我要每次增加一张单的时候怎么让No按照当天的流水号自动加1呢?

    可以在SQL里自定义一个函数,然后再插入数据的时候来调用这个函数就可以了

    /*
    **************************************
    功能:产生当天工单的流水号
    参数:@pfx 前缀表示,如:A ,AA, BA
    结果:返回如:A080721001,A080721002

      作者:Vaiyanzi  (Email:vaiyanzi@gmail.com)
    **************************************
    */
    CREATE FUNCTION  dbo.fun_getNo (@pfx nvarchar(10))  
    RETURNS nvarchar(20)  AS  
    BEGIN 
        
    DECLARE @No nvarchar(20)
        
    Set @No=@pfx --
        DECLARE @tNo int
        
    SELECT @tNo = RIGHT(ISNULL(MAX(No),0), 3+ 1001 FROM Bill WHERE  (CONVERT(varchar(10), CreateTime, 120= CONVERT(varchar(10),GetDate(),120))
        
    SET @No = @No + CONVERT(varchar(10), GetDate(),12+ RIGHT(@tNo3)
        
    RETURN @No
    END

     这样就可以在插入数据的时候调用这个函数来产生当日的工单流水号了


    作者:蓝之风
    出处:http://www.cnblogs.com/vaiyanzi/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    CentOS7安装minio
    xshell连接虚拟机Connection failed
    Mysql时间加减函数
    mysql存储过程模板
    Activiti实现会签功能
    2018考研复试流程
    C编程经验总结5(剧终)
    《数据结构总结》
    《关于安卓和IOS开发》
    番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起
  • 原文地址:https://www.cnblogs.com/vaiyanzi/p/1248278.html
Copyright © 2011-2022 走看看