1
我得到了要創建的異常。有誰能夠幫助我?如何在Mysql中以正確的方式編寫存儲過程中的嵌套循環以及我的錯誤是什麼?如何在存儲過程中創建mysql嵌套循環
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 ;
99%的時間我會下注,如果你在嵌套遊標,你做錯了什麼。 [你應該看看基於集合的解決方案,而不是程序性的。](http://stackoverflow.com/questions/1687512/rbar-vs-set-based-programming-for-sql) – 2012-03-06 19:49:27
您的示例代碼太長。 – usr 2012-03-06 20:10:46