标签:存储 一次 END 记录 UPDATE NUMBER done tb id
DELIMITER // DROP PROCEDURE IF EXISTS UPDATE_SERIAL_NUMBER// CREATE PROCEDURE UPDATE_SERIAL_NUMBER () BEGIN DECLARE done INT DEFAULT 0;/*游标循环标志*/ DECLARE v_id BIGINT (20) ; DECLARE ids CURSOR FOR select '-1' as id UNION all select tb.id from t_dic tb where tb.parent_id='-1' and TYPE = 'DIC_PRODUCTTYPE' AND tb.validity='1' UNION all select tb.id from t_dic tb where tb.parent_id is null and TYPE = 'DIC_PRODUCTTYPE' AND tb.validity='1'; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1 ; OPEN ids ; id : LOOP FETCH ids INTO v_id; IF done = 1 THEN LEAVE id ; END IF ; BEGIN IF v_id is not null and v_id <> '' THEN select @num:=IF(max(serial_number) is NULL,0,max(serial_number)) from t_product; UPDATE t_product p RIGHT JOIN ( SELECT ID FROM t_product where typeId = v_id ORDER BY `timeStorage` DESC ) a on p.ID = a.ID, (SELECT @orderItem:=0) b set p.serial_number = @num + (@orderItem:=@orderItem+1); SET done = 0; END IF ; END; END LOOP id ; CLOSE ids ; END ; call UPDATE_SERIAL_NUMBER(); DROP PROCEDURE IF EXISTS UPDATE_SERIAL_NUMBER;
标签:存储,一次,END,记录,UPDATE,NUMBER,done,tb,id 来源: https://www.cnblogs.com/stromgao/p/13100539.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。