ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

记录一次存储过程的使用

2020-06-12 17:01:28  阅读:212  来源: 互联网

标签:存储 一次 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有