简体   繁体   中英

How to create mysql nested loop in stored procedure

I got the exception to create. Can anybody help me? How to write nested loop in stored procedure in Mysql the proper way and what is my wrong?

DELIMITER $$

`INVESTMENT_MATCH_POINT_CREATOR`(_percentage INT, _vat_tex INT)
BEGIN
    DECLARE _user_id INT; 
    DECLARE _package_id INT;


    DECLARE _left_investment INT;
    DECLARE _right_investment INT;

    DECLARE _left_point INT;
    DECLARE _right_point INT;

    DECLARE _left_carry_point INT;
    DECLARE _right_carry_point INT;

    DECLARE _get_point INT;

    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE _user_investment_table CURSOR FOR SELECT user_id,package_id,left_invesetment,right_investment DATA FROM user_investment_match;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN _user_investment_table;

    read_loop:LOOP

    FETCH _user_investment_table INTO _user_id,_package_id,_left_investment,_right_investment;

    IF done THEN 
    LEAVE read_loop;
    END IF;

        BEGIN
                DECLARE _match_point INT; 
                DECLARE done2 BOOLEAN DEFAULT FALSE;

                DECLARE _package_match_point_table CURSOR FOR SELECT match_point DATA FROM package_match_points WHERE package_id=_package_id ORDER BY match_point DESC;
                DECLARE CONTINUE HANDLER FOR NOT FOUND SET done2 = TRUE;

                OPEN _package_match_point_table;
                read_loop2:LOOP

                FETCH _package_match_point_table INTO _match_point;

                    IF done2 THEN 
                    LEAVE read_loop2;
                    END IF;

                    /*if(_match_point=<_left_investment) and (_match_point=<_right_investment) then
                        set _left_point=abs(_left_investment-_match_point);
                        set _right_point=abs(_right_investment-_match_point);
                        set _get_point=((_match_point*_percentage)/100);
                    end if;*/

                END LOOP;
                CLOSE _package_match_point_table;
            END$$




    END LOOP;
    CLOSE _user_investment_table;

END$$

DELIMITER ;

您只应在过程结束时使用指定的分隔符,但是在代码中,内部块的末尾使用$$分隔符(换句话说,您正在使用$$分隔符来表示结束符)实际结束之前的程序)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM