zoukankan      html  css  js  c++  java
  • 记录一次存储过程的使用(1)

    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;
    随笔看心情
  • 相关阅读:
    gradle
    1-NIO使用
    处理非正常终止的错误
    一个取消多生产者单消费者的日志线程池服务
    executes()源码
    死锁
    CyclicBarrier使用
    Semaphore
    Spring学习(4)IOC容器配置bean:定义与实例化
    在Maven上Web项目添加Spring框架
  • 原文地址:https://www.cnblogs.com/stromgao/p/13100539.html
Copyright © 2011-2022 走看看