注册

Mysql转DM存储过程怎么处理?

宽宽 2023/05/31 1001 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:windows
【CPU】:
【问题描述】*:
我有一个mysql 的存储过程,想迁移到dm,请问这个存储过程如何转换过来呢?


CREATE DEFINER=`root`@`%` PROCEDURE `generate_codeNo`(in CODENAMEPre varchar(25), in num int,  out newCODENO varchar(25),in TABLE_NAME varchar(25),in sufnum int)
BEGIN  
  DECLARE currentDate varCHAR (15) ;-- 当前日期,有可能包含时分秒   
  DECLARE maxNo INT DEFAULT 0 ; -- 离现在最近的满足条件的订单编号的流水号最后5位,如:SH2013011000002的maxNo=2   
  DECLARE oldCODENO VARCHAR (25) DEFAULT '' ;-- 离现在最近的满足条件的订单编号   
    
	
		
	if num = 0 then -- 根据年月日生成订单编号   
    SELECT "" INTO currentDate ;-- 订单编号形式:前缀+流水号,如:SH00002  
	elseif num = 4 then -- 根据年月日生成订单编号   
    SELECT DATE_FORMAT(NOW(), '%Y') INTO currentDate ;-- 订单编号形式:前缀+年+流水号,如:SH201300002
  elseif num = 6 then -- 根据年月日生成订单编号   
    SELECT DATE_FORMAT(NOW(), '%Y%m') INTO currentDate ;-- 订单编号形式:前缀+年月+流水号,如:SH20130100002
  elseif num = 8 then -- 根据年月日生成订单编号   
    SELECT DATE_FORMAT(NOW(), '%Y%m%d') INTO currentDate ;-- 订单编号形式:前缀+年月日+流水号,如:SH2013011000002   
  elseif num = 14 then -- 根据年月日时分秒生成订单编号   
    SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') INTO currentDate ; -- 订单编号形式:前缀+年月日时分秒+流水号,如:SH2013011010050700001,个人不推荐使用这种方法生成流水号   
  else -- 根据年月日时分生成订单编号   
    SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i') INTO currentDate ;-- 订单形式:前缀+年月日时分+流水号,如:SH20130110100900005   
  end if ;  
    
  SELECT IFNULL(CODENO, '') INTO oldCODENO   
  FROM smartform_orders   
  WHERE SUBSTRING(CODENO, length(CODENAMEPre)+1, num) = currentDate   
    AND SUBSTRING(CODENO, 1, length(CODENAMEPre)) = CODENAMEPre   
    and length(CODENO) = num+sufnum+ length(CODENAMEPre)
  ORDER BY ID DESC LIMIT 1 ; -- 有多条时只显示离现在最近的一条   
    
  IF oldCODENO != '' THEN   
    SET maxNo = CONVERT(SUBSTRING(oldCODENO, -sufnum), DECIMAL) ;-- SUBSTRING(oldCODENO, -5):订单编号如果不为‘‘截取订单的最后5位   
  END IF ;  
  SELECT   
    CONCAT(CODENAMEPre, currentDate,  LPAD((maxNo + 1), sufnum, '0')) INTO newCODENO ; -- LPAD((maxNo + 1), 5, '0'):如果不足5位,将用0填充左边   
    
  INSERT INTO smartform_orders (CODENO, TABLENAME) VALUES (newCODENO, TABLE_NAME) ; -- 向订单表中插入数据   
  SELECT   
    newCODENO ;  
END

回答 0
暂无回答
扫一扫
联系客服