mysql 存储订单,MySQL使用存储过程生成订单编号
生成的订单编号类似:
CREATE DEFINER=`root`@`%` PROCEDURE `p`(IN table_name varchar(50),IN filed_name varchar(50) ,IN orderNamePre varchar(10) ,in num INT )
BEGIN
DECLARE currentDate VARCHAR (15) ;-- 当前日期,有可能包含时分秒
DECLARE maxNo INT DEFAULT 0 ; -- 离现在最近的满足条件的订单编号的流水号最后5位,如:SH2013011000002的maxNo=2
-- DECLARE l_orderNo varCHAR (25) ;-- 新生成的订单编号
-- DECLARE oldDate DATE ;-- 离现在最近的满足条件的订单编号的日
DECLARE oldOrderNo VARCHAR (25) DEFAULT '' ;-- 离现在最近的满足条件的订单编号 SET @sqlcmd = concat('select * from ', tbl);
DECLARE padstrlength int DEFAULT 3;
-- DECLARE num INT DEFAULT 6 ;
-- declare orderNamePre varchar(10) DEFAULT 'PROCESS';
declare prelength INT ;
SET prelength = LENGTH(orderNamePre);
IF num = 6 THEN
SELECT DATE_FORMAT(NOW(), '%y%m%d') INTO currentDate ;-- 根据年月日生产订单编号
ELSEIF 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 ;
-- 预处理指令的使用
SET @sqlcmd = CONCAT('SELECT IFNULL(',filed_name,', \'\') into @oldNo',
' from ', table_name,
' WHERE' ,
' SUBSTRING(',filed_name,',', prelength + 1,',',num,') = \'',currentDate,'\'',
' AND SUBSTRING(',filed_name,',1',',',prelength,') = \'',orderNamePre,'\'',
' AND LENGTH(',filed_name,') = ',prelength + padstrlength + num ,
' ORDER BY id DESC LIMIT 1 ;'
);
prepare stmt from @sqlcmd;
execute stmt;
deallocate prepare stmt;
set oldOrderNo = @oldNo;
IF oldOrderNo != '' THEN
SET maxNo = CONVERT(SUBSTRING(oldOrderNo, 0 - padstrlength),DECIMAL);-- 截取订单号后面的序列号,然后转换为DECIMAL类型变量
END IF;
SELECT CONCAT(orderNamePre,currentDate,LPAD((maxNo + 1),padstrlength,'0')) as neworderno;-- 拼接新订单号,最大订单序列号加1,如果总位数小于padstrlength,就在左边补0
end
调用:
call p('表名','订单号字段名','订单号前缀','时间类型');
标签:存储,name,MySQL,订单,num,编号,currentDate,DECLARE
来源: https://blog.csdn.net/u010042669/article/details/89516027
mysql 存储订单,MySQL使用存储过程生成订单编号相关推荐
- mysql序列表,自增序列生成合同编号
项目中使用mysql数据库,需要使用自增序列号生成合同编号,编号按年份每年更新,且根据合同模板不同需使用多个自增序列.为了考虑拓展性,也方便其他业务使用序列,使用了序列表进行集中管理,使用函数操作序列 ...
- php订单号递增,PHP生成订单号的两种方法
在开发项目的时候经常有生成订单号的需求,这里列出两种生成20位订单号的常用方法. 方法一: 以下代码是14位当前时间加6位随机数,如果增减位数,只需修改末尾的数字6即可.<?php functi ...
- mysql 存储过程逻辑表达 and_MySQL - 存储过程 (二)- 逻辑判断语句
MySQL - 存储过程 (二)- 逻辑判断语句 一, if 语句: IF(expr1,expr2,expr3) 如果 expr1 是 TRUE (expr1 <> 0 and expr1 ...
- mysql 存储 结构,mysql目录与存储结构(一)
mysql索引与存储结构(一) 首先从一个问题说起. 问题现象: 查询语句如下: -- sql1 SELECT w.wid, w.rid FROM warestock w JOIN product p ...
- mysql存储指纹,mysql - ZKTeco 4500指纹验证 - 堆栈内存溢出
仅需要一些有关如何从mySQL数据库上的已存储字节模板中验证指纹的帮助,我已经在数据库中存储了BYTES模板,但是我无法进行验证. 表名是finger_template,列是byte_template ...
- 用存储过程生成记录编号
CREATE procedure up_GetBeautifulOrderNumber(@orderNumber char(12) out) as begin declare @number char ...
- 【MySQL】MySQL 存储引擎、索引、锁、集群
MySQL存储引擎 MySQL体系结构 体系结构的概念任何一套系统当中,每个部件都能起到一定的作用! MySQL的体系结构 体系结构详解 客户端连接 支持接口:支持的客户端连接,例如C.Java.PH ...
- 淘淘商城第113讲——生成订单
本讲我们将一起学习下如何生成订单. 数据库表设计分析 订单表 我们先来看下tb_order表的结构,如下图所示. 可以看到: 从订单表的结构中还可以看到create_time.buyer_nick.s ...
- php根据当天日期生成编号,前台js根据当前时间生成订单号
*********前台显示框**************** **************js代码***************** function GetDateNow() { var vNow ...
最新文章
- linux各版本使用率,Windows10系统各版本份额出炉:十月更新占有率不高。
- 让服务器接近最终用户能解决性能问题吗?——微云网络
- java ++i、i++、i++ + ++i、i++ + i++原理
- 【LeetCode笔记】198. 打家劫舍(Java、动态规划)
- java面试题_Java面试题总结(2020年多家公司整理的300道Java面试题手册)
- Windows xp+Ubuntu 11.10 硬盘安装
- informix的常用SQL语句
- 空调微型计算机控制,空调自动控制
- Attention注意力机制总结
- JAVAWeb项目 微型商城项目-------(四)用户注册
- c51步进电机程序汇编语言,51单片机驱动步进电机(汇编语言)
- Jmeter使用函数助手生成随机数,处理同一个随机数多处使用
- COOKIE与SESSION比较
- 在学习JAVA过程中,你遇到的最大的困难是什么?
- 1071: 数塔 (动态规划)
- cannal 启动异常(show master status‘ has an error pls check. you need (at least one of) the SUPER,REPLI)
- 用计算机计算棋盘上麦粒,C棋盘上的麦粒 ——用电子表格自动计算 教学设计...
- 9.nodejs 内置模块
- 计算机科学与技术考研难度排行,考研专业的难度排名
- php 获取当前时间的农历,获取阴历(农历)和当前日期的js代码_javascript技巧