BEGIN
DECLARE currentDate VARCHAR(15) ;/*当前日期,有可能包含时分秒 */
DECLARE maxNo INT DEFAULT 0 ; /* 离现在最近的满足条件的订单编号的流水号最后5位,如:SH2013011000002的maxNo=2 */ DECLARE oldOrderNo VARCHAR (25) DEFAULT '' ;/* 离现在最近的满足条件的订单编号 */ IF num = 8 THEN /* 根据年月日生成订单编号 */
SELECT DATE_FORMAT(NOW(), '%Y%m%d') INTO currentDate ;/*订单编号形式:前缀+年月日+流水号,如:SH2013011000002 */
ELSEIF num = 14 THEN /* 根据年月日时分秒生成订单编号 */
SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') INTO currentDate ; /*订单编号形式:前缀+年月日时分秒+流水号,如:SH2013011010050700001,个人不推荐使用这种方法生成流水号 */
ELSE /* 根据年月日时分生成订单编号 */
SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i') INTO currentDate ;/*订单形式:前缀+年月日时分+流水号,如:SH20130110100900005 */
END IF ; SELECT IFNULL(serial_number, '') INTO oldOrderNo
FROM t_finance_records
WHERE SUBSTRING(serial_number, 2, num) = currentDate
AND SUBSTRING(serial_number, 1, 1) = orderNamePre
AND LENGTH(serial_number) = 6 + num
ORDER BY id DESC LIMIT 1 ; /* 有多条时只显示离现在最近的一条 */ IF oldOrderNo != '' THEN
SET maxNo = CONVERT(SUBSTRING(oldOrderNo, -5), DECIMAL) ;/*SUBSTRING(oldOrderNo, -5):订单编号如果不为‘‘截取订单的最后5位 */
END IF ;
SELECT
CONCAT(orderNamePre,currentDate,LPAD((maxNo + 1),5,'0')) INTO newOrderNo ;
END

一个订单相关的存储过程(MySQL)的更多相关文章

  1. mixer: 一个用go实现的mysql proxy

    介绍 mixer是一个用go实现的mysql proxy,支持基本的mysql代理功能. mysql的中间件很多,对于市面上面现有的功能强大的proxy,我主要考察了如下几个: mysql-proxy ...

  2. 存储过程--mysql

    https://zhuanlan.zhihu.com/p/23423264 存储过程-官方解释: 是sql语句和控制语句的预编译集合.以一个名称存储并作为一个单元处理. 存储过程-直白的说: 把需要的 ...

  3. c#定义一个方法,根据存储过程名称和存储过程参数数组,执行对应的存储过程

    定义一个根据存储过程名称和存储过程参数数组,执行对应的存储过程的方法.用SqlParameter[]代替存储过程需要的参数.这样就不用为每一个存储过程写一个方法了 1.首先定义一个ExcuteProc ...

  4. 一个非常标准的连接Mysql数据库的示例代码

    一.About Mysql 1.Mysql 优点 体积小.速度快.开放源码.免费 一般中小型网站的开发都选择 MySQL ,最流行的关系型数据库 LAMP / LNMP Linux作为操作系统 Apa ...

  5. cordova插件file使用时遇到的一个平台相关的问题

    使用cordova-plugin-file可以帮助我们方便的操作app中的图片等文件,分享一下我在用该插件从图库读取图片时遇到的一个平台相关的小问题. 使用场景,我会在APP中新增一张图片,会有一个可 ...

  6. Django学习路15_创建一个订单信息,并查询2020年\9月的信息都有哪些

    在 app5.models.py 中添加一个 Order 表 class Order(models.Model): o_num = models.CharField(max_length= 16 ,u ...

  7. 分享一个经验,代码打开mysql链接,执行存储过程时,提示:Table 'mysql.proc' doesn't exist

    先说说的场景 老项目,因为服务器升级了mysql数据库版本,从5.7.13升到8.0.15 然而代码里面有直连数据的访问,通过执行存储过程来查询数据的业务,此时抛出异常   Table 'mysql. ...

  8. 订单支付成功后存储过程 - MYSQL

    BEGIN SET @userId = (SELECT user_id FROM t_shoporder WHERE id = orderId); /*修改订单状态,改成已支付*/ ,update_t ...

  9. 下订单存储过程 - MYSQL

    BEGIN DECLARE smark INT; DECLARE orderId INT; /*查询课程是否存在,如果不存在就不执行订单操作了*/ ) FROM t_course WHERE id = ...

随机推荐

  1. vb.net中的SqlHelper

    1.定义: SqlHelper是一个基于·NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),Sq ...

  2. android 开源库集合的链接列表

    1.  内容挺多的 https://github.com/Trinea/android-open-project

  3. Table of Contents - TCP/IP

    网络访问层 Ethernet II 网际层 IP IPv4 报文格式 ICMP ICMP 报文分析 ping: 向网络主机发送 ICMP ECHO_REQUEST 包 ARP ARP 过程 arp 命 ...

  4. 获取屏幕中某个点的RGB值与CAD屏幕像素值

    '获取CAD屏幕像素的比值 Function ViewScreen() As Double Dim ScreenSize As Variant ScreenSize = ThisDrawing.Get ...

  5. static和public

    static:静态.   可以设置:静态类.静态变量.静态方法.   没有使用static修饰的成员为实例成员. 静态成员的使用:通过类名.   1.不加static修饰的成员是对象成员,归每个对象所 ...

  6. 每天一道LeetCode--434. Number of Segments in a String

    Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...

  7. 十、Notepad++正则表达式使用

    推荐个正则表达式在线测试的工具http://ccmpp.com/Regex/ Notepad++正则表达式使用 2011-01-06 10:01:35| 分类: 文档 | 标签:正则表达式 替换 no ...

  8. 防止服务器被暴力破解使用DenyHosts

    公司有台服务器被坏人盯上了,通过日志可以看到一直在做暴力破解ssh. 防止服务器被暴力破解使用DenyHosts 参考链接: 防止ssh破解,Ubuntu安装denyhosts的一些问题 防止你的ss ...

  9. ORACLE-树状数据结构获取各层级节点信息

    平时工作中出报表时,要求分别列出员工的一级部门,二级部门....,在数据库中,部门表(unit)的设计一般为在表中维护每个部门的上级部门(pid字段),或者通过一个关联表(unit_link)维护层级 ...

  10. 第九篇、自定义底部UITabBar

    国际惯例先上图: 代码实现(在UITabBarViewController设置): - (void)setUpTabBar { LHLTabBar *tabBar = [[LHLTabBar allo ...