使用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 表
随机推荐
- 读书笔记---改善c#编程的157个建议
1.在拼接string时,如果牵涉到其他类型,先tostring一下会减少装箱操作:频繁操作字符串变量的话,使用stringbuilder效率较高. 2.tryParse相对于parse而言效率高,t ...
- Golang之Socket
go创建socket很简单 package main import ( "fmt" "net" ) func main() { //服务器监听地址 fmt.Pr ...
- 201621123008 《Java程序设计》第六周实验总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 在 ...
- 还不好好读书吗?清华3D录取通知书出炉,还能动!
近日,清华大学2018录取通知书“亮相”!看完后,网友直呼:哪里可以买到? 打开录取通知书 3D“二校门”跃然纸上 由清华师生共同打造.手工定制.独一无二的2018新版录取通知书来了!在新版录取通知书 ...
- Laravel Eloquent Model->isDirty() Function
1 引言 introduction 有时,我们需要在 Model 某些属性发生变化时,作出相应的处理. 这时,我们可以使用 Model->isDirty() 方法进行判断. 2 场景 比如,姓名 ...
- shell的基本语法
一 赋值运算符 1 += :使用方法是,((x+=需要增加的数字))算和值. 2 *= :使用方法是,((x*=需要怎加的倍数))算乘值. 3 %= :使用方法是,((x%=需要除以的数字))算余数 ...
- [GO]删除切片的某个值
func removePro(ddbenv []*model.EnvInfo, k int) []*model.EnvInfo { :]...) } for k, v := range ddbenv ...
- linux下mysql命令大全
1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...
- MySQL-5.7.10主主同步的安装和配置
目录 目录 1 1. 安装 1 2. 修改MySQL的root密码 4 3. mysqld_safe和mysql.server 4 4. 主主同步配置 4 4.1. 创建同步用户 4 4.2. my. ...
- 10.N个整数中查找是否相加为K[深度搜索]
/*摘自书本,这种算法很绕!*/ #include <iostream> using namespace std; ,,,}; ; bool dfs(int i,int sum) { if ...