目的:使用Navicat 创建mysql存储过程,实现格式为8位日期(年月日)+5位流水号序列。

步骤:

1、打开Navicat 登录数据库,点击导航栏上的函数,如下图:

2、点击新建函数,选择“过程”,如下图:

3、添加输出参数,如下图:

4、存储过程代码如下:

BEGIN
DECLARE currentDate CHAR (13) ;-- 定义currentDate为当前日期,格式为:年+月+日
DECLARE maxNo INT DEFAULT 0 ; -- 定义maxNo为离现在最近的满足条件的订单编号的流水号最后5位,如:2018042600002的maxNo=2
DECLARE oldOrderNo CHAR (13) DEFAULT '' ;-- 定义oldOrderNo为离现在最近的订单编号,默认为空
DECLARE newOrderNo CHAR (13) DEFAULT '' ;-- 定义newOrderNo为新生成的订单编号,默认为空 SELECT DATE_FORMAT(NOW(), '%Y%m%d') INTO currentDate ;-- 当前日期 订单编号形式:年月日+流水号,如:2018042600002 /* 从test_orders表中查出最新一条记录赋值给oldOrderNo */
SELECT IFNULL(orderNo, '') INTO oldOrderNo -- IFNULL(expr1,expr2),接收两个参数,如果不是NULL,则返回第一个,如果是NULL,返回第二个
FROM test_orders
WHERE SUBSTRING(orderNo, 1, 8) = currentDate
ORDER BY id DESC LIMIT 1 ; -- 有多条时只显示离现在最近的一条 IF oldOrderNo != '' THEN
SET maxNo = CONVERT(SUBSTRING(oldOrderNo, -5), DECIMAL) ;-- SUBSTRING(oldOrderNo, -5):订单编号如果不为‘‘截取订单的最后5位
END IF ;
SELECT
CONCAT(currentDate, LPAD((maxNo + 1), 5, '')) INTO newOrderNo ; -- LPAD((maxNo + 1), 5, '0'):如果不足5位,将用0填充左边 SELECT newOrderNo; END

5、修改参数数据类型长度,默认没有,可能会报错,这里固定为8位日期+5位流水号,

6、保存存储过程名,orderNo,

7、新建测试数据库,test_orders,添加数据,目前我的表里面最新的orderNo数据为‘201811600005’,

8、调用存储过程,如下图:

使用Navicat 创建mysql存储过程,实现日期加流水号序列的更多相关文章

  1. 创建MySQL存储过程示例

    创建MySQL存储过程是学习MySQL数据库必须要掌握的知识,下文对创建MySQL存储过程作了详细的介绍,供您参考学习. AD:2013大数据全球技术峰会课程PPT下载 下文将教您如何创建MySQL存 ...

  2. 使用navicat工具创建MySQL存储过程

    使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程:  代码如下: ...

  3. 用navicat工具创建MySQL存储过程

    使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程:  代码如下: ...

  4. Navicat 创建mysql存过、定时执行存过

    创建存过: 使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程: ...

  5. mysql中使用日期加减时无法识别年-月格式数据的问题,%Y-%m"这种格式数据

    最新做报表统计的时候处理按月统计部分时发现,虽然使用 DATE_FORMAT( time, '%Y-%m' ) 函数可以将日期格式转成年-月,但是如果是参数是年-月格式,即"2018-10& ...

  6. Navicat Premium创建MySQL存储过程

    1.使用Navicat Premium打开创建函数向导,操作:连接名——数据库——函数——新建函数 2.选择过程——输入存储过程参数——完成(这一步可以不填写参数,编写存储过程代码的时候设置参数) 3 ...

  7. 创建mysql存储过程,调用 及删除

    //创建表 create table test ( aid ) primary key auto_increment , nickname ), addtime ) ) //查看表结构 show co ...

  8. 创建mysql 存储过程

    CREATE PROCEDURE `test_insert_stu`() BEGIN DECLARE num INT; SET num = 0; WHILE (num<10) DO insert ...

  9. Navicat 创建 Mysql 函数

    1.点击新建函数 2.写函数,保存为v1 3.调用 SELECT id,v1(id) from 表

随机推荐

  1. css之颜色篇

      app多采用浅灰#f5f5f5   白色一般用white,如果觉得白太直接了,可以加一点点灰,#fefefe,   这种情况下搭配#e4e4e4的浅灰边框最合适.

  2. C语言程序,找出一个二维数组的鞍点。

    什么是鞍点????? 鞍点就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点. 昨天突然在书上看到这样的一道题,就自己尝试着写了一个找出一个二维数组中的鞍点. 好 ...

  3. 2018.08.19 NOIP模拟 dp(二分+状压dp)

    Dp 题目背景 SOURCE:NOIP2015-SHY-10 题目描述 一块土地有 n 个连续的部分,用 H[1],H[2],-,H[n] 表示每个部分的最初高度.有 n 种泥土可用,他们都能覆盖连续 ...

  4. 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录(转)

    出处:http://www.cnblogs.com/mienreal/p/4528470.html ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视 ...

  5. 理解指令的restrict属性(转)

    restrcit属性说明 restrict: EACM中的任意一个之母.它是用来限制指令的声明格式的. E - 元素名称:<my-directive></my-directive&g ...

  6. Java synchronized关键字的理解

    转载自:http://blog.csdn.net/xiao__gui/article/details/8188833 在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环 ...

  7. 关于Python Package下的Module import方式[转]

    2012年有一个目标我没有达成,那就是深入学习和使用Python语言.这个目标被其他学习任务和工作无情的抢占了,当然最主要的原因还是我重视不够^_^. 近期恰逢有一些Python工程的开发工作要做,就 ...

  8. (最长回文串 模板) 最长回文 -- hdu -- 3068

    http://acm.hdu.edu.cn/showproblem.php?pid=3068 最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory ...

  9. (最小生成树)Constructing Roads -- poj -- 2421

    链接: http://poj.org/problem?id=2421 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2113 ...

  10. python关键的语法

    python关键的语法 1.标准类型分类