|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Pierre Inscription : décembre 2010 Messages : 15 ![]() |
Bonjour,
Encore une fois désolé pour l'intitulé peu prècis. Voici mon problème : Je voudrais créer une procédure qui boucle sur chaque ID d'une table, et pour cet ID, insérer des valeurs d'une autre table dans une nouvelle table. Voici, en gros, ce que je voudrais obtenir : Citation:
Citation:
Comment pourrais-je procéder ? (ah le PL/SQL ... c'est bien plus simple =P) Merci du temps passé à essayer de m'aider. Si je n'ai pas été suffisamment clair dans mon explication, n'hésitez pas à me poser des questions. Cordialement. |
||
|
|
00
|
|
|
#2 | ||
|
Invité de passage
![]() Pierre Inscription : décembre 2010 Messages : 15 ![]() |
Bonjour,
Ce matin, en allant au boulot, j'ai pensé à quelquechose que j'ai réalisé : J'ai déclaré le second curseur dans une autre procédure que j'appelle à chaque passage dans la boucle de la première procédure ... Cependant, voici ce que cela fait : Le premier ID est bien selectionné, l'insertion dans la Table3 de tous les tuples dont j'avais besoin est bien réalisée, mais lors du parcours du 2ème ID, je n'insère qu'un seul tuple (au lieu d'une dizaine ...) et la procédure est terminée. Je suppose que le problème vient toujours du "SQL STATE '02000'" ... Je vois joins mon code, pour être plus clair ^^ Code :
Et donc, pour le 1er ID_Anomalie j'obtiens donc les dates dont j'ai besoin, et pour le 2è ID_Anomalie, j'obtiens uniquement la première date dont j'ai besoin et c'est tout ... Merci ! |
||
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Avec si peu d'éléments, c'est difficile d'évaluer exactement ce que tu souhaites faire, mais je ne suis pas certain qu'il faille se compliquer à ce point la vie, en passant par une fonction et des curseurs... Un INSERT INTO... SELECT... pourrait peut-être suffire. Seulement, il faudrait qu'on ait plus de détail sur les tables, leur contenu et ce que tu souhaites insérer exactement. ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Pierre Inscription : décembre 2010 Messages : 15 ![]() |
Bonjour ced,
En fait, dans ma base, je dispose de 2 tables : l'une est un simple calendrier (ID_DATE, ANNEE, SEMESTRE, TRIMESTRE, ...), et l'autre contient des informations sur des bugs (rencontrés lors des tests). Dans cette seconde table, je dispose d'une part de l'ID du bug et d'informations sur celui-ci (état actuel, priorité, sévérité, etc.) et d'autre part de la date de création. Je dois réaliser un document Qlikview permettant de visualiser les bugs actifs (un bug est actif entre le moment où il est créé et le moment où il a été résolu) lorsque je choisis,par exemple, la semaine 10 de l'année 2011. Cependant, uniquement avec la date de création, je ne peux pas obtenir les bugs actifs pour une période quelconque. Il me faut donc une table de référence contenant l'ID du bug et les dates où il était actif. exemple : un bug (ID = 6) a été créé le 2 mars, et résolu le 6 mars. Dans ma table de référence, j'aurais besoin d'obtenir ce résultat : ID_Anomalie ; ID_DATE 6 ; 02/03/2011 6 ; 03/03/2011 6 ; 04/03/2011 6 ; 05/03/2011 6 ; 06/03/2011 Si le bug n'était pas résolu au jour d'aujourd'hui, j'obtiendrais autant de ligne que de nombre de jours entre la date de création du bug et aujourd'hui. Cette table de référence doit être alimentée tous les jours, automatiquement (c'est pour cela que j'ai créé une procédure stockée, afin de pouvoir automatiser son lancement). |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
OK, ça commence à être plus clair.
Et comment sait-on qu'un bug est résolu (sans passer par les dates) ? ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Pierre Inscription : décembre 2010 Messages : 15 ![]() |
L'outil utilisé pour la gestion des anomalies est Mantis (peut-être tu connais).
Pour qu'un bug soit considéré comme résolu, le développeur qui corrige le bug le fait savoir à travers cet outil. Dans ma base, le statut 'résolu' est traduit par la valeur '80' dans la colonne new_value de la table mantis_bug_history_table Code :
Si, pour le bug numéro 'x', il n'y a pas de date de résolution, alors c'est qu'il n'est pas encore résolu (logique), je voudrais donc insérer dans la table BugActif l'ID numéro 'x' et toutes les dates à partir de la création de ce bug, jusqu'à la date du jour. |
||
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 839 ![]() |
La solution est très simple en fait...
vous devez sauvegarder l'état du booléen avant l'utilisation du curseur interne et le restituer après comme dans cet exemple: Code sql :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com