Mysql错误(#1064)您的SQL语法中有错误,因为正确的语法在第20行的''附近使用

时间:2017-12-02 10:16:18

标签: mysql syntax phpmyadmin

我无法弄清楚我做了什么错误。

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|

但我不知道如何解决或更换它。 如果您有任何想法,那将受到欢迎!

1 个答案:

答案 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工具,它可以突出显示错误,并且可以更轻松地修复它们。