错误过程MYSQL

错误过程MYSQL,mysql,stored-procedures,Mysql,Stored Procedures,我在我的兽医诊所数据库中创建了一个程序 该程序应为每种药物添加10包,其中当前服用该动物的特定动物通过id“animal”标识,该id是该程序的输入参数,并且临床上不存在数量超过5包的药物。在“PhysicalDrug”表中,有临床使用的药物包装 换句话说,表“处方”中的所有药物,如果“结束日期”一行为空或在将来,并且临床上几乎没有包装,则为动物开出 我做的程序只适用于符合上述条件的第一条记录,但跳过了其他记录,我不知道为什么,你能帮我吗?非常感谢你! 对不起,我的英语不好>对代码进行一点重新格

我在我的兽医诊所数据库中创建了一个程序

该程序应为每种药物添加10包,其中当前服用该动物的特定动物通过id“animal”标识,该id是该程序的输入参数,并且临床上不存在数量超过5包的药物。在“PhysicalDrug”表中,有临床使用的药物包装

换句话说,表“处方”中的所有药物,如果“结束日期”一行为空或在将来,并且临床上几乎没有包装,则为动物开出

我做的程序只适用于符合上述条件的第一条记录,但跳过了其他记录,我不知道为什么,你能帮我吗?非常感谢你!
对不起,我的英语不好>对代码进行一点重新格式化就可以得到答案:在您循环插入前10次之后,您永远不会重置计数器i。在此之后,i<10始终为false,因此您再也不会进入INSERT循环。

非常感谢!!:D我没有注意到:O
  CREATE PROCEDURE add_Drug(IN animal INTEGER)
  BEGIN
    DECLARE Code VARCHAR(30);
    DECLARE i, eof INT DEFAULT 0;

    DECLARE cdrugs CURSOR FOR 
      SELECT P.Code_drug 
        FROM   Prescription P
        WHERE  P.Id_animal = animal
          AND (P.End_date IS NULL OR P.End_date >= CURDATE());

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET eof = 1;

    # the function counter returns the greater id of the table PhysicalDrug incremented by one
    SET @Id = counter();
    OPEN cdrugs;
    read_loop: LOOP
      FETCH cdrugs INTO Code;
      IF eof = 1 THEN
        LEAVE read_loop;
      END IF;
      #Memorize the number of units of the drug present in the clinic 
      SET @NumberDrug =
        (SELECT COUNT(*) 
          FROM PhysicalDrug
          WHERE Code_drug = Code);
      IF @NumberDrug < 5 THEN
        WHILE i < 10 DO
          INSERT INTO PhysicalDrug (Id, Code_drug)
            VALUES (@Id, Code);
          SET i = i + 1;
          SET @Id = @Id + 1;
        END WHILE;
      END IF;
    END LOOP;
    CLOSE cdrug;
  END //
  DELIMITER ;