MySql Curseur - Création d'une procédure

je suis en train de créer un curseur pour la première fois. J'ai regardé la documentation, je comprends le concept, mais je n'arrive pas à l'obtenir même être déclaré...

Je suis en utilisant:

  • MySql 5.1.41
  • Contrairement à d'autres comme un gestionnaire de
  • (s'exécutant localement sur un xampp instalation)

Même lorsque le copier-coller l'exemple de l' http://dev.mysql.com/doc/refman/5.1/en/cursors.html

    CREATE PROCEDURE curdemo()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE a CHAR(16);
  DECLARE b,c INT;
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur1;
  OPEN cur2;

  read_loop: LOOP
    FETCH cur1 INTO a, b;
    FETCH cur2 INTO c;
    IF done THEN
      LEAVE read_loop;
    END IF;
    IF b < c THEN
      INSERT INTO test.t3 VALUES (a,b);
    ELSE
      INSERT INTO test.t3 VALUES (a,c);
    END IF;
  END LOOP;

  CLOSE cur1;
  CLOSE cur2;
END;

J'ai des erreurs:
Code D'Erreur : 1064

Vous avez une erreur dans votre syntaxe SQL;
consultez le manuel qui correspond à
votre serveur MySQL version pour le
droit de la syntaxe à utiliser près de " à la ligne 3

et un tas d'autres à la suite,

cela ne fait aucun sens pour moi, peut-toute âme charitable de m'aider s'il vous plaît?

Merci

J'ai donc eu l'exemple de la requête au travail (grâce à ajreal), la réinitialisation de la DÉLIMITEUR. Mais quand j'exécute ma requête:

DELIMITER##
CREATE PROCEDURE RetiraPoints()
BEGIN
    DECLARE userid BIGINT;  
    DECLARE done INT DEFAULT 0;
    DECLARE cur CURSOR FOR SELECT uid FROM viewpoints;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    OPEN cur;
    read_loop: LOOP 
    FETCH cur INTO userid;
        IF done THEN
            LEAVE read_loop;
        END IF;
        INSERT INTO points (iduser, points, pointcat) VALUES (uid, -1, 1), (userid, -1, 2), (userid, -1, 3), (userid, -1, 4), (userid, -1, 5), (userid, -1, 6);
    END LOOP;
    CLOSE cur;
END;##

j'obtiens:
Code D'Erreur : 1064

Vous avez une erreur dans votre syntaxe SQL;
consultez le manuel qui correspond à
votre serveur MySQL version pour le
droit de la syntaxe à utiliser près de " DÉCLARER fait
INT par DÉFAUT 0; DÉCLARER cur CURSEUR POUR
SÉLECTIONNEZ le liquide provenant DE points de vue; ' à la ligne
1

mon dieu, que c'est dur...

Je reçois cette erreur tout le temps lors de la création d'eux. C'est tellement stupide, il s'avère que je n'avais pas l'autorisation de créer la procédure. Sauf si vous êtes connecté en tant que root, vous devez spécifier le nom de chaque procédure créée à l'avant et d'y accéder. Si idiot
oui, mais je suis connecté en tant que root, c'est mon instalation
besoin de mettre un espace après le délimiteur, Et à la fin END ne nécessite pas de ;
mec votre le meilleur, merci merci merci

OriginalL'auteur André Alçada Padez | 2011-01-06