mysql 生成流水号 存储过程 订单编号
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql 生成流水号 存储过程 订单编号,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3201字,纯文字阅读大概需要5分钟。
内容图文
![mysql 生成流水号 存储过程 订单编号](/upload/InfoBanner/zyjiaocheng/465/15e7823a90c249f6a7be57a304455ec4.jpg)
生成订单编号的存储过程(generate_orderNo):
1 CREATE DEFINER=PROCEDURE `generate_orderNo`(in orderNamePre char(2), in num int, out newOrderNo varchar(25)) 2 BEGIN 3 DECLARE currentDate varCHAR (15) ;-- 当前日期,有可能包含时分秒 4 DECLARE maxNo INT DEFAULT 0 ; -- 离现在最近的满足条件的订单编号的流水号最后5位,如:SH2013011000002的maxNo=2 5 -- DECLARE l_orderNo varCHAR (25) ;-- 新生成的订单编号 6 -- DECLARE oldDate DATE ;-- 离现在最近的满足条件的订单编号的日期 7 DECLARE oldOrderNo VARCHAR (25) DEFAULT ‘‘ ;-- 离现在最近的满足条件的订单编号 8 9 if num = 8 then -- 根据年月日生成订单编号 10 SELECT DATE_FORMAT(NOW(), ‘%Y%m%d‘) INTO currentDate ;-- 订单编号形式:前缀+年月日+流水号,如:SH2013011000002 11 elseif num = 14 then -- 根据年月日时分秒生成订单编号 12 SELECT DATE_FORMAT(NOW(), ‘%Y%m%d%H%i%s‘) INTO currentDate ; -- 订单编号形式:前缀+年月日时分秒+流水号,如:SH2013011010050700001,个人不推荐使用这种方法生成流水号 13 else -- 根据年月日时分生成订单编号 14 SELECT DATE_FORMAT(NOW(), ‘%Y%m%d%H%i‘) INTO currentDate ;-- 订单形式:前缀+年月日时分+流水号,如:SH20130110100900005 15 end if ; 16 17 SELECT IFNULL(orderNo, ‘‘) INTO oldOrderNo 18 FROM test_orders 19 WHERE SUBSTRING(orderNo, 3, num) = currentDate 20 AND SUBSTRING(orderNo, 1, 2) = orderNamePre 21 and length(orderNo) = 7 + num 22 ORDER BY id DESC LIMIT 1 ; -- 有多条时只显示离现在最近的一条 23 24 IF oldOrderNo != ‘‘ THEN 25 SET maxNo = CONVERT(SUBSTRING(oldOrderNo, -5), DECIMAL) ;-- SUBSTRING(oldOrderNo, -5):订单编号如果不为‘‘截取订单的最后5位 26 END IF ; 27 SELECT 28 CONCAT(orderNamePre, currentDate, LPAD((maxNo + 1), 5, ‘0‘)) INTO newOrderNo ; -- LPAD((maxNo + 1), 5, ‘0‘):如果不足5位,将用0填充左边 29 30 INSERT INTO test_orders (orderNo, orderName) VALUES (newOrderNo, ‘testNo‘) ; -- 向订单表中插入数据 31 -- set newOrderNo = l_orderNo; 32 SELECT 33 newOrderNo ; 34 END
参数说明:
orderNamePre:(输入)订单编号的前缀,这里设定为两个字符
num:(输入)将按什么规则生成流水号(生成规则有:年月日、年月日时分秒、年月日时分三种),可选的num有:8、12、14
newOrderNo:(输出)新生成的订单编号
调用存储过程向表中插入数据:
SET @orderNo = ‘‘;
CALL `generate_orderNo`(‘SH‘, 12, @orderNo);
SELECT @orderNo;
查看生成的数据:
在实际项目中只需要修改其中的一些生成规则即可,到此为止,流水号的生成就搞定了
有关mysql存储过程的知识可以参考:MySQL存储过程详解
mysql 生成流水号 存储过程 订单编号
标签:
本文系统来源:http://www.cnblogs.com/mljun/p/5571912.html
内容总结
以上是互联网集市为您收集整理的mysql 生成流水号 存储过程 订单编号全部内容,希望文章能够帮你解决mysql 生成流水号 存储过程 订单编号所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。