IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

[MySQL] Probleme de Select dans un REPEAT


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Par défaut [MySQL] Probleme de Select dans un REPEAT
    Bonsoir,

    Voila j utilise des procédure pour rechercher et tagger des reviews qui sont insérer dans ma base.

    J ai une procédure qui est appeler lors de l insertion, et une autre lorsque la liste des tags change.

    Mon problème est que ma procédure categorisation avorte sans raison avant d avoir parcouru toutes les catégories.

    Le probleme vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT `id` INTO v_id FROM `Reviews` WHERE `CategoryID` = v_categoryid AND `FeedbackID` = v_feedbackid;
    car lorsque je le neutralise, la boucle parcourt bien toutes les occurrences.
    Et la même requête dans recategorisation fonctionne parfaitement.

    Merci de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    CREATE PROCEDURE `categorisation` (v_feedbackid INT,v_review TEXT)
    BEGIN
     
        DECLARE v_done BOOLEAN DEFAULT FALSE;
        DECLARE v_categoryid INT;
        DECLARE v_id INT;
        DECLARE v_temp INT;
        DECLARE v_result INT;
        DECLARE v_list CURSOR FOR SELECT `id` FROM `Category`;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE;
     
        OPEN v_list;
     
        REPEAT
     
          FETCH v_list INTO v_categoryid;
     
          IF NOT v_done THEN
     
            SET v_result := AllKeywords(v_review,v_categoryid);
            SELECT `id` INTO v_id FROM `Reviews` WHERE `CategoryID` = v_categoryid AND `FeedbackID` = v_feedbackid;
     
            IF v_result = 2 THEN
     
                IF v_id > 0 THEN
                    UPDATE `Reviews` SET `isCompletList` = TRUE WHERE `id` = v_id;
                ELSE
                    INSERT INTO `Reviews` VALUES (NULL,v_feedbackid,v_categoryid,TRUE);
                END IF;
     
            ELSEIF v_result = 1 THEN
     
                IF v_id > 0 THEN
                    UPDATE `Reviews` SET `isCompletList` = FALSE WHERE `id` = v_id;
                ELSE
                    INSERT INTO `Reviews` VALUES (NULL,v_feedbackid,v_categoryid,FALSE);
                END IF;
     
            END IF;
     
          END IF;
     
        UNTIL v_done  END REPEAT;
     
        CLOSE v_List;
     
    END;
    $$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    CREATE PROCEDURE `recategorisation` (v_categoryid INT)
    BEGIN
        DECLARE v_feedbackid INT;
        DECLARE v_id INT;
        DECLARE v_review TEXT;
        DECLARE v_result INT;
        DECLARE v_done INT DEFAULT 0;
        DECLARE v_list CURSOR FOR SELECT `id`,`Review` FROM `Feedback`;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;
     
        OPEN v_list;
     
        REPEAT
     
          FETCH v_list INTO v_feedbackid,v_review;
     
          IF NOT v_done THEN
     
            SET v_result := AllKeywords(v_review,v_categoryid);
            SET v_id := 0;
     
            IF v_result = 2 THEN
     
                SELECT `id` INTO v_id FROM `Reviews` WHERE `CategoryID` = v_categoryid AND `FeedbackID` = v_feedbackid;
     
                IF v_id > 0 THEN
                    UPDATE `Reviews` SET `isCompletList` = TRUE WHERE `id` = v_id;
                ELSE
                    INSERT INTO `Reviews` VALUES (NULL,v_feedbackid,v_categoryid,TRUE);
                END IF;
     
            ELSEIF v_result = 1 THEN
     
                SELECT `id` INTO v_id FROM `Reviews` WHERE `CategoryID` = v_categoryid AND `FeedbackID` = v_feedbackid;
     
                IF v_id > 0 THEN
                    UPDATE `Reviews` SET `isCompletList` = FALSE WHERE `id` = v_id;
                ELSE
                    INSERT INTO `Reviews` VALUES (NULL,v_feedbackid,v_categoryid,FALSE);
                END IF;
     
            END IF;
     
          END IF;
     
        UNTIL v_done  END REPEAT;
     
        CLOSE v_List;
    END;

  2. #2
    Membre chevronné Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Par défaut
    Quel est le message?
    Une de tes instructions SQL font sortir de la boucle avant la fin du curseur.

Discussions similaires

  1. probleme de selection dans une datagrid
    Par khayri dans le forum Struts 1
    Réponses: 3
    Dernier message: 15/05/2007, 22h06
  2. Probleme de Selection dans un ListView
    Par bixi dans le forum Delphi
    Réponses: 1
    Dernier message: 04/06/2006, 00h40
  3. probleme de selection dans une liste deroulant
    Par biboulou dans le forum IHM
    Réponses: 5
    Dernier message: 04/05/2006, 12h16
  4. Probleme de selection dans un requete
    Par 12_darte_12 dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/03/2006, 16h38
  5. [ASE]probleme memoire: select dans une insert
    Par SegmentationFault dans le forum Sybase
    Réponses: 2
    Dernier message: 16/08/2005, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo