Home  >  Article  >  Database  >  mysql 创办自增长订单号

mysql 创办自增长订单号

WBOY
WBOYOriginal
2016-06-07 16:27:111234browse

mysql 创建自增长订单号 因为最近做项目需要,需要使用到,自定义的不重复的自增长的订单号,在网上找了资料然后又加入了自己的修改,做成的mysql生成订单号的存储过程。 drop PROCEDURE pp; create procedure PROC_GET_NO (tname varchar(50),cname VARCHAR(

mysql 创建自增长订单号
因为最近做项目需要,需要使用到,自定义的不重复的自增长的订单号,在网上找了资料然后又加入了自己的修改,做成的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')
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn