1

このストアド プロシージャを機能させようとしています。パラメータを受信しようとしていて、それを使用して「participantes」テーブルの行を探し、結果をカウントして、ID がテーブルに存在するかどうかを検証します。どういうわけか、プロシージャを保存しようとすると、「SQL 構文にエラーがあります。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 バージョン: 5.1.68-cll
PHP バージョン: 5.3.16

4

1 に答える 1

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 ;
于 2013-03-01T07:18:06.027 に答える