使用Navicat 创建mysql存储过程,实现日期加流水号序列
目的:使用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存储过程,实现日期加流水号序列的更多相关文章
- 创建MySQL存储过程示例
创建MySQL存储过程是学习MySQL数据库必须要掌握的知识,下文对创建MySQL存储过程作了详细的介绍,供您参考学习. AD:2013大数据全球技术峰会课程PPT下载 下文将教您如何创建MySQL存 ...
- 使用navicat工具创建MySQL存储过程
使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程: 代码如下: ...
- 用navicat工具创建MySQL存储过程
使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程: 代码如下: ...
- Navicat 创建mysql存过、定时执行存过
创建存过: 使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程: ...
- mysql中使用日期加减时无法识别年-月格式数据的问题,%Y-%m"这种格式数据
最新做报表统计的时候处理按月统计部分时发现,虽然使用 DATE_FORMAT( time, '%Y-%m' ) 函数可以将日期格式转成年-月,但是如果是参数是年-月格式,即"2018-10& ...
- Navicat Premium创建MySQL存储过程
1.使用Navicat Premium打开创建函数向导,操作:连接名——数据库——函数——新建函数 2.选择过程——输入存储过程参数——完成(这一步可以不填写参数,编写存储过程代码的时候设置参数) 3 ...
- 创建mysql存储过程,调用 及删除
//创建表 create table test ( aid ) primary key auto_increment , nickname ), addtime ) ) //查看表结构 show co ...
- 创建mysql 存储过程
CREATE PROCEDURE `test_insert_stu`() BEGIN DECLARE num INT; SET num = 0; WHILE (num<10) DO insert ...
- Navicat 创建 Mysql 函数
1.点击新建函数 2.写函数,保存为v1 3.调用 SELECT id,v1(id) from 表
随机推荐
- js和jquery获取span里面的值
JQ和Js获取span标签的内容 html: 1 <span id="content">‘我是span标签的内容’</span> javascript获取: ...
- ssh的无密码登录
实现步骤如下: 1 生成一对公钥和私钥 $ ssh-keygen #以上命令等价于 ssh-keygen -t rsa #-t:指定密钥的类型,默认为SSH-2 的rsa类型; 运行上面的命令后,系统 ...
- 2018年这些UI设计趋势正在流行,跟上必拿高薪!
数字设计领域和时尚圈是一样的,总会有各种各样的趋势让人眼花缭乱.无论是用户界面的视觉元素,还是用户体验的细节,总有许多值得说道的新玩法和新方向.就目前来看,UI设计的大趋势是更加大胆新颖的视觉设计,通 ...
- 使用 Php Artisan Tinker 来调试你的 Laravel
Posted on 2016年6月19日 by ichou 本文翻译自:Tinker with the Data in Your Laravel Apps with Php Artisan Tinke ...
- 刷新物化视图sql
在plsql中新建command window,执行如下语句: exec dbms_mview.refresh('V_CTRL_POINT_PLAN_DATE'); -- V_CTRL_POINT ...
- Windows10(uwp)开发中的侧滑
还是在持续的开发一款Windows10的应用中,除了上篇博客讲讲我在Windows10(uwp)开发中遇到的一些坑,其实还有很多不完善的地方,比如(UIElement.Foreground).(Gra ...
- [开源,学习,分享]UWP第三方简书客户端分享
简介 Windows10正式版发布到现在,我利用零零碎碎的一些时间对UWP进行一些学习,也基于这门技术开发了一个第三方的简书App. 基本界面 优酷视频: http://v.youku.com/v_s ...
- 2018.10.19 NOIP模拟 硬币(矩阵快速幂优化dp)
传送门 不得不说神仙出题人DZYODZYODZYO出的题是真的妙. f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法 ...
- hdu-1133
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1133 思路:有m个人拿50元的纸币,n个人拿100元的纸币门票价格是50元,要求每个售票员遇到100元 ...
- HDU 4355 Party All the Time (三分求极值)
题意:给定x轴上有n个点,每一个点都有一个权值,让在x轴上选一个点,求出各点到这个点的距离的三次方乘以权值最小. 析:首先一开始我根本不会三分,也并没有看出来这是一个三分的题目的,学长说这是一个三分的 ...