Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/02/2007, 20h11   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 2
Points : 0
Points : 0
Par défaut FOR LOOP avec curseur

Comment on peut créer un curseur dynamique et faire un LOOP dans les enregistrements du curseur pour faire un INSERT

ex:
------------------------------------------------
------------------------------------------------
------------------------------------------------
DECLARE STMT VARCHAR(1024);
DECLARE MESG TIMESTAMP;

SET STMT = ' SELECT MESSAGE_TIME
FROM ''CONTROL_''|| p_nom_trace
WHERE message = ''EVMON_START''';

-- PREPARE S1 FROM STMT;

P2: BEGIN
DECLARE CUR1 CURSOR FOR STMT;
OPEN CUR1;
LOOP
FETCH CUR1 INTO mesg;

INSERT INTO PIR901_F_EVEN_AFFA
VALUES(NEXTVAL FOR NO_SEQ_PIR901,
'NO_EVEN',
mesg,
0,
0,
PREVVAL FOR NO_SEQ_PIR900,
0);
END LOOP;
CLOSE CUR1;

END P2;
------------------------------------------------
------------------------------------------------
------------------------------------------------

Dans le curseur, le nom de la table est dynamique et j'aimerais pouvoir faire un LOOP et sortir de la LOOP automatiquement après la fin du curseur


Merci

Ben
benoitchabot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 15h20   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Code :
1
2
3
4
5
6
7
8
9
DECLARE ...;
OPEN ...;
fetch_loop:   -- Nom de ma boucle
LOOP
FETCH ...;
INSERT INTO ...;
END LOOP fetch_loop;
CLOSE ...;
Et pour quitter la boucle avant la fin du curseur :
Code :
1
2
3
4
FETCH ...;
IF ... THEN
LEAVE fetch_loop;
END IF;
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h31.


 
 
 
 
Partenaires

Hébergement Web