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