2013-03-01 63 views
1

我试图使这个存储过程的工作;我试图接收一个参数,并在'参数表'中查找一行,并计算结果以验证表中是否存在该标识。不知何故,当我尝试保存程序失败时,说“你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在第16行'END'附近使用正确的语法。任何帮助将会升值。在MySQL中的存储过程中使用变量

BEGIN 
DECLARE cuentaAtleta INT; 

SELECT COUNT(*) 
INTO cuentaAtleta 
FROM participantes 
WHERE id_participante = id; /* id is a parameter */ 

IF cuentaAtleta > 0 THEN 
    SELECT * 
    FROM participantes 
    INNER JOIN disciplinas ON participantes.id_disciplina = disciplinas.id_disciplina 
    WHERE id_participante = 'id; 

END IF 
END 

这是一个Linux服务器
MySQL版本上:68年5月1日-CLL
PHP版本:5.3.16

回答

3

因为你还没有终止的语句,而你还没有改变分隔符。

DELIMITER $$ 
CREATE PROCEDURE procNameHERE(IN ID INT) 
BEGIN 

    DECLARE cuentaAtleta INT; 

    SELECT COUNT(*) 
    INTO cuentaAtleta 
    FROM participantes 
    WHERE id_participante = id; 

    IF cuentaAtleta > 0 THEN 
     SELECT * 
     FROM participantes 
       INNER JOIN disciplinas 
        ON participantes.id_disciplina = disciplinas.id_disciplina 
     WHERE id_participante = id; 
    END IF ; 

END $$ 
DELIMITER ; 
+0

你说得对,但我也忘了在最后的分号IF 非常感谢 – 2013-03-01 07:21:22

+0

欢迎您':D'做到了现在的工作? – 2013-03-01 07:21:46