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 :


C1 CURSOR FOR SELECT ID FROM Table1;
Pour chaque élément de C1
{
C2 CURSOR FOR SELECT champ FROM Table2;
Pour chaque élément de C2
{
INSERT INTO Table3 VALUES (ID, champ);
}
}
Cependant, je ne connais que cette syntaxe pour les boucles :


DECLARE x INT;
DECLARE done INT DEFAULT 0;
DECLARE C1 CURSOR FOR SELECT ID FROM Table1;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN C1;

REPEAT
FETCH C1 INTO x;
...
UNTIL done END REPEAT;
Je ne peux pas déclarer une deuxième fois : "DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;". Je ne pourrais donc pas recréer une boucle à l'intérieur de la première ...


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.