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