Mysql存储过程生成指定格式的订单号

Mysql存储过程和函数可以理解为一段SQL的集合,它们被事先编译好并且存储在数据库中。

基本语法:

创建:

 create procedure 存储过程名(参数列表) 其他修饰符 存储过程体

调用:

 call 存储过程名(参数列表)

以下是使用Mysql存储过程生成指定格式的订单号:

 1 drop procedure if exists `add_repair`;
 2 delimiter //
 3 create definer=`root`@`192.168.1.243` procedure `add_repair`(in n int)
 4 begin
 5     declare i int default 0;
 6 
 7     -- 订单编号
 8     declare orderNamePre varchar(25) default 'WX'; -- 订单格式,开头符号
 9     declare currentDate varchar(255);
10     declare maxNO int default 0;
11     declare oldOrderNo varchar(255) default '';
12     declare newOrderNo varchar(255) default '';
13 
14     -- 订单编号操作
15     select date_format(now(), '%Y%m%d') into currentDate;    
16     
17     -- 如果当日已有历史订单,截取相应数据存入变量
18     select ifnull(bill_number,'') into oldOrderNo from repair_bill
19     where substring(bill_number, 3, 8)=currentDate 
20         and substring(bill_number,1,2) = orderNamePre
21     order by id desc limit 1;
22     
23     if oldOrderNo != '' then
24         set maxNO=convert(substring(oldOrderNo,-5),decimal);
25     end if;
26     
27     -- 向表repair_bill插入数据:生成维修单
28     select concat(orderNamePre, currentDate, lpad((maxNO+1),5,'0')) into newOrderNo;
29 
30     insert into repair_bill (bill_number,...) values (newOrderNo,...);
31     set maxNo = maxNo + 1;
32     set i = i + 1;
33     end while;
34 end //
35 delimiter ;
36 
37 call add_repair(1);

 

转载于:https://www.cnblogs.com/leihaha/p/8403897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值