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 :

Procédure stockée non terminée


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut Procédure stockée non terminée
    Bonjour, je me rapproche de cette section car je ne comprends pas pourquoi ma procédure stockée ne m'ajoute que deux enregistrements alors qu'elle devrait m'en ajouter 600+.

    Il doit y avoir une erreur dans ma procédure, mais je ne sais pas où, et je cherche depuis une semaine sans résultats.

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    CREATE PROCEDURE generer_mouvements_BQ()
       BEGIN
          DECLARE NoMouvement INT;
     
          DECLARE done INT DEFAULT 0;
     
          DECLARE id_facture, id_compte_comptable INT default 0;
          DECLARE libelle, direction, type_facture VARCHAR(256);
          DECLARE montant DECIMAL(10,2);
     
          DECLARE compteClient CURSOR FOR
          SELECT f.id_f,
                 m.id_cc,
                 ref_internee,
                 montant,
                 direction,
                 IF(direction = 'credit', 'avoir', 'droit')
          FROM f
          INNER JOIN m
          ON m.id_m = f.id_m
          INNER JOIN mc
          ON mc.id_cc = m.id_cc
          WHERE id_etat_facture > 2
          AND id_etat_facture < 9
          GROUP BY id_f;
          DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
     
          select MAX(mouvement)+1 into NoMouvement FROM mouvements_comptable;
          OPEN compteClient;
     
          REPEAT
             FETCH compteClient INTO id_f, id_cc, libelle, montant, direction, type_facture;
     
             IF done != 1 THEN
                INSERT INTO mouvements_comptable
                (
                   mouvement,
                   journal,
                   id_facture,
                   id_compte_comptable,
                   libelle_mouvement,
                   montant,
                   direction,
                   analitique,
                   type_facture
                )
                VALUES(
                   NoMouvement,
                   'BQ',
                   id_facture,
                   id_compte_comptable,
                   libelle,
                   montant,
                   direction,
                   'LRJ INFO',
                   type_facture
                ), (
                   NoMouvement,
                   'BQ',
                   id_facture,
                   418,
                   libelle,
                   montant,
                   IF(direction = 'credit', 'debit', 'credit'),
                   'LRJ INFO',
                   type_facture
                );
     
                SET NoMouvement = NoMouvement + 1;
             END IF;
     
          UNTIL done = 1 END REPEAT;
     
          CLOSE compteClient;
     
       END//

  2. #2
    Membre confirmé Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Par défaut
    Bon ben j'ai finalement trouvé u_u

    En fait, dans la procédure d'origine, les noms des variables que j'utilisais étaient les mêmes que les noms des colonnes de ma requête, ce qui devait engendrer un conflit et renvoyer une erreur '02xxx'

    Lorsque j'ai continué mes tests, j'ai changé de nomenclature en mettant la première lettre du type de la variable suivit d'un underscore "_" puis le nom de la variable.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECLARE c_toto VARCHAR(256);
    ce qui a résolu mon problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédure stockée non exécutée
    Par amaga dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/04/2010, 19h44
  2. Procédure stockée non modifiable
    Par KeKeMaN dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 16/01/2010, 00h53
  3. Procédure stockée non visible dans le schéma
    Par Floduh dans le forum Développement
    Réponses: 2
    Dernier message: 24/11/2009, 14h53
  4. [DEBUTANT]Procédure stocké non bloquante
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/06/2007, 12h45
  5. Réponses: 3
    Dernier message: 09/06/2007, 13h19

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