create procedure nickinsert(IN ab INT,IN loop_count INT)
BEGIN
    DECLARE abc INT;
    DECLARE a INT;
    SET abc = 0;
    SET a = 1;
    repeat
    WHILE abc < loop_count DO
    INSERT INTO nick(gmt_create,seller_sid) VALUES( date_sub(current_date,interval abc day),a);
    SET abc = abc + 1;
    END WHILE;
    SET a = a + 1;
    until a > ab  
   END repeat;
    END 一共ab个人,每个人插入loop_count条数据。
这个存储过程怎么只执行了内层循环啊?

解决方案 »

  1.   

    DELIMITER $$USE `aa`$$DROP PROCEDURE IF EXISTS `nickinsert`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `nickinsert`(IN ab INT,loop_count INT)
    BEGIN
       DECLARE abc INT;
       DECLARE a INT;
       SET abc = 0;
       SET a = 1;
       REPEAT
       WHILE abc < loop_count DO
       INSERT INTO nick(gmt_create,seller_sid) VALUES( DATE_SUB(CURRENT_DATE,INTERVAL abc DAY),a);
       SET abc = abc + 1;
       END WHILE;
     SET abc = 0;
       SET a = a + 1;
       UNTIL a > ab   
       END REPEAT;
       END$$DELIMITER ;
      

  2.   

    第2次循环要重新赋值
    SET abc = 0;