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 08/03/2007, 13h09   #1
Invité de passage
 
Inscription : juin 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 8
Points : 0
Points : 0
Par défaut Procédure SQL : Boucle sur CURSEUR

J’aimerais connaître une méthode simple pour lire tous les rangs d’un curseur du premier au dernier en utilisant la gestion des erreurs NOT FOUND ou SQLCODE par exemple.

D’avance merci
Yakaldir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 15h06   #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
Avec quel langage ?
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 21h07   #3
Invité de passage
 
Inscription : juin 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 8
Points : 0
Points : 0
Par défaut Euh ...

Désolée, mais je suis débutante sur cet environnement ... Je dirais que c'est l'équivalent du PL/SQL sous ORACLE afin d'écrire des procédures, fonctions ou packages stockés.
Yakaldir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 16h33   #4
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
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
WHENEVER SQLERROR GOTO erreur2;
 
Declare C1 cursor FOR
SELECT col1, col2, col3, ... FROM MaTable
WHERE ...
...
 
Open C1;
IF SQLCODE < 0   -- erreur1
...
end IF:
 
WHENEVER NOT FOUND GO TO fini;
MaBoucle: 
 Loop        
  Fetch C1 INTO var1, var2, var3, ...
 
IF ... Then     -- Pour quitter la boucle avant que le fetch atteigne EOF
   Leave MaBoucle;         
End IF;          
 
End Loop MaBoucle;    
 
Close C1;      
 
fini: 
...
RETURN;
 
erreur2:
...
RETURN;
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 22h16   #5
Invité de passage
 
Inscription : juin 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 8
Points : 0
Points : 0
Par défaut Merci ...

J'avais essayé quelquechose d'équivalent mais en fait je bloque sur le SQLCODE qui semble avoir toujours la valeur 0 même en fin de curseur !
Je vais essayer cette solution, merci.
Yakaldir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 15h56   #6
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
En fin de curseur, il me semble bien que SQLCODE = 100.
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 08h59.


 
 
 
 
Partenaires

Hébergement Web