我无法弄清楚我做了什么错误。
index=True
实际上我知道这个代码块引发了这个问题:
CREATE PROCEDURE ajoutEmprunt(nss FLOAT(15, 0), codeB INT(14), dateEm DATE)
BEGIN
DECLARE nbMaxBook INT;
DECLARE nbCurrentBook INT;
DECLARE late INT;
SELECT COUNT(*) INTO nbCurrentBook FROM emprunte WHERE emprunte.nssU = nss GROUP BY emprunte.nssU;
SELECT categorie.nbMaxOuv
INTO nbMaxBook
FROM categorie, appartient_a, utilisateur
WHERE categorie.idCat = appartient_a.idCat AND appartient_a.nssU=utilisateur.nssU;
IF EXISTS (SELECT * FROM emprunte WHERE nss = emprunte.nssU GROUP BY emprunte.nssU HAVING DATEDIFF(CURRENT_DATE, emprunte.dateLimite) < 0))
THEN SET late = 1;
ELSE IF nbCurrentBook = 0 THEN SET late = 0;
END IF;
IF nbCurrentBook < nbMaxBook AND late = 0
THEN INSERT INTO emprunte(nssU, codeBarre, dateEmprunt) VALUES(nss,codeB, dateEm);
END IF;
END|
但我不知道如何解决或更换它。 如果您有任何想法,那将受到欢迎!
答案 0 :(得分:0)
您的)
太多了ELSEIF
而不是ELSE IF
IF EXISTS (SELECT * FROM emprunte WHERE nss = emprunte.nssU GROUP BY emprunte.nssU HAVING DATEDIFF(CURRENT_DATE, emprunte.dateLimite) < 0)
THEN SET late = 1;
ELSEIF nbCurrentBook = 0
THEN SET late = 0;
END IF;
您应该查看一个像 MySQL Workbench 这样的SQL工具,它可以突出显示错误,并且可以更轻松地修复它们。