因为最近做项目需要,需要使用到,自定义的不重复的自增长的订单号,在网上找了资料然后又加入了自己的修改,做成的mysql生成订单号的存储过程。 drop PROCEDURE pp; create procedure PROC_GET_NO (tname varchar(50),cname VARCHAR(50),prefix VARCHAR(20)) begin #最终生成的订单号 declare order_sn VARCHAR(20); #当前系统中的订单号 declare prev VARCHAR(15); #旧的日期 declare prevdatetime VARCHAR(15); #截取到的编号 declare sn BIGINT(15); #当前的系统时间 declare nowdate VARCHAR(15); # 获得当天的最后一条记录编号 判断数据库中的创建日期是否大于当前日期 也就等于是是否是当天的单据 set @pre = prefix; set @na=tname; set @cna = cname; set @sql_text:='select MAX('; set @sql_text := CONCAT(@sql_text,@cna,') into @recordcount from '); set @whe :=' WHERE create_date > CURRENT_DATE()'; set @sql_text:=concat(@sql_text,@na,@whe); prepare stmt from @sql_text; execute stmt; set prev = @recordcount; #截取日期 select SUBSTR(prev FROM 2 FOR 9) into prevdatetime; #截取编号 select RIGHT(prev,5) into sn; #获得当前的时间 使用now()函数 获得的格式是2014-05-28 11:20:18 然后在获取自己想要的数据 select DATE_FORMAT(NOW(),'%Y%m%d') into nowdate; #判断最后一条记录是否为空 if isnull(prev) then select concat(@pre,nowdate,'00001') into order_sn; #return order_sn; elseif nowdate = prevdatetime then select concat(@pre,nowdate,'00001') into order_sn; #return order_sn; else select concat(@pre,prevdatetime,LPAD((sn+1),4,'0'))into order_sn; #return order_sn; end if; select order_sn; end; CALL pp('quotation','quotation_no','O')
mysql创建自增长订单号_mysql 创建自增长订单号
最新推荐文章于 2022-09-21 14:50:04 发布