• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    存储过程实现订单号,流水单号(8位)的详细思路
    此文章是借鉴园中的各位大神的,本人只是略作修改。有不好的地方,欢迎吐槽。
    先写实现思路,然后再贴上代码
    1.建立存储过程,声明输出参数@indentNum,输出订单号
    2.一般订单号由两部分组成,日期和后续的订单号,根据需求看日期后面需要跟多少位数字,此文为8位。
    3.定义函数@date为日期部分,赋值。
    4.判断表中是否存在当日的数据,根据日期进行查询,一般订单表中都会有日期的吧。
    5.如果表中存在,则在其表中最大的订单上+1,如果没有则新增当日的第一条订单号。
    :其中会用到一个平常不怎么用到的函数replicate,因为在最大的订单上+1的时候需要将高位的0补上。
    语法:print replicate('0',3) ————则会输出3个0
    复制代码 代码如下:

    USE MyBookShop
    GO
    --如果存在存储过程则删除
    IF OBJECT_ID('PROC_NumIndent') IS NOT NULL
    DROP PROC PROC_NumIndent
    GO
    --新建存储过程,用于生产流水单号
    CREATE PROC PROC_NumIndent
    @indentNum nvarchar(20) output--流水单号
    AS
    --日期部分为当前日期。
    DECLARE @date nvarchar(20)
    set @date = convert(varchar(20),getdate(),112)--格式为20130117
    --判断表中是否存在当日的数据
    DECLARE @CountMax nvarchar(20)
    select @CountMax = max(id) from testst where convert(varchar(10),rtrim(ltrim(date))) = convert(varchar(10),rtrim(ltrim(getdate())))
    --如果@CountMax不等于空,则表示表中有当日的数据
    IF (@CountMax > '')
    BEGIN
    declare @num nvarchar(20)
    --在今天取到的最大订单上取最右边(后面)8位数转为int型加一
    set @num = convert(varchar(20),convert(int,right(@CountMax,8))+1)
    --用replicate函数,重复赋值‘0',补上高位
    set @num = replicate('0',8-len(@num))+@num
    set @indentNum = @date+ @num
    print @indentNum
    END
    --不存在就以日期加‘00000001'为今日的第一条订单
    ELSE
    BEGIN
    set @indentNum = @date + '00000001'
    PRINT @indentNum
    END
    GO
    --以下是执行存储过程
    DECLARE @indentNum nvarchar(20)
    EXEC PROC_NumIndent @indentNum

    还有希望各位大神能否提供一个更好的对于日期进行比较的方法。
    就是判断2个日期是否相等,数据库当中是datatime格式的,可是判断的话就比较蛋疼了。
    还想只取日期部分而不取时间部分,进行判断。希望大家多来吐槽。
    您可能感兴趣的文章:
    • 利用sql函数生成不重复的订单号的代码
    • 利用asp.net实现生成不重复订单号
    • PHP生成唯一订单号的方法汇总
    • C#实现在购物车系统中生成不重复订单号的方法
    • PHP生成唯一订单号
    • C#生成唯一不重复订单号
    上一篇:你真的了解触发器么 数据实时同步更新问题剖析
    下一篇:SQLSERVER编译与重编译发生场景及重用的利弊介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    存储过程实现订单号,流水单号(8位)的详细思路 存储,过程,实现,订单号,