Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
936 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Curseurs imbriqués -> deadloop :(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] Curseurs imbriqués -> deadloop :(

n°396296
Neeks
56k forever
Posté le 16-05-2003 à 00:59:47  profilanswer
 

Ben oui, en gros je dois afficher des objets (enfin, plusieurs champs par objet, hein...), et pour chacun, leurs propriétés, genre :
 
objet1
   propriétés de l'objet1
objet2
   propriétés de l'objet2
objet3
   propriétés de l'objet3
...
 
J'ai pondu ça, mais la 1ere boucle est infinie !:( (Heu, je mets pas mon code, juste le concept de mon truc, je voudrais savoir si le principe est bon ou si c'est tout nul :D)
 

Code :
  1. DECLARE cursor1 CURSOR FOR...
  2. OPEN cursor1...
  3. FETCH cursor1...
  4. while(sqlca.sqlcode != 100)
  5. {
  6.    print... // prints the objects  
  7.    FETCH cursor1...
  8.    DECLARE cursor2 CURSOR FOR...
  9.    OPEN cursor2...
  10.    FETCH cursor2...
  11.    while(sqlca.sqlcode != 100)
  12.    {
  13.       print... // prints the properties
  14.       FETCH cursor2...
  15.    }
  16.    CLOSE cursor2;
  17. }
  18. CLOSE cursor1;


 
:hello::hello::hello:
 
 
[Oracle] Curseurs imbriqués -> deadloop :(

mood
Publicité
Posté le 16-05-2003 à 00:59:47  profilanswer
 

n°396681
thecoin
Chasseur de chasseur de canard
Posté le 16-05-2003 à 12:46:39  profilanswer
 

Deja tu déclare a chaque boucle ton cursor2. Défini le une fois au début avec des paramètres.


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
n°396684
thecoin
Chasseur de chasseur de canard
Posté le 16-05-2003 à 12:52:40  profilanswer
 

Code :
  1. DECLARE
  2. CURSOR cursor1 IS...
  3. CURSOR cursor2 (param1%TYPE,param2%TYPE...) IS..
  4. r_cursor1 cursor1%ROWTYPE;
  5. r_cursor1 cursor2%ROWTYPE;
  6. BEGIN
  7.   FOR r_cursor1 IN cursor1
  8.   LOOP
  9.    {
  10.        print... // prints the objects   
  11.      
  12.        FOR r_cursor2 IN cursor2(r_cursor1.param1,r_cursor1.param2...)
  13.         {
  14.             print... // prints the properties
  15.         }
  16.        END LOOP;
  17.    }
  18.   END LOOP;
  19. END;


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
n°396829
tomlameche
Et pourquoi pas ?
Posté le 16-05-2003 à 14:36:53  profilanswer
 

Neeks a écrit :

Ben oui, en gros je dois afficher des objets (enfin, plusieurs champs par objet, hein...), et pour chacun, leurs propriétés, genre :
 
objet1
   propriétés de l'objet1
objet2
   propriétés de l'objet2
objet3
   propriétés de l'objet3
...
 
J'ai pondu ça, mais la 1ere boucle est infinie !:( (Heu, je mets pas mon code, juste le concept de mon truc, je voudrais savoir si le principe est bon ou si c'est tout nul :D)
 

Code :
  1. DECLARE cursor1 CURSOR FOR...
  2. OPEN cursor1...
  3. FETCH cursor1...
  4. while(sqlca.sqlcode != 100)
  5. {
  6.    print... // prints the objects  
  7.    FETCH cursor1...
  8.    DECLARE cursor2 CURSOR FOR...
  9.    OPEN cursor2...
  10.    FETCH cursor2...
  11.    while(sqlca.sqlcode != 100)
  12.    {
  13.       print... // prints the properties
  14.       FETCH cursor2...
  15.    }
  16.    CLOSE cursor2;
  17. }
  18. CLOSE cursor1;


 
:hello::hello::hello:
 
 
[Oracle] Curseurs imbriqués -> deadloop :(


Tiens , c'est du PB ça !
La première chose qui ne va pas, c'est ton while sqlca.sqlcode != 100, car s'il y a un problème dans ta requete, il te retourne direct -1 ... et ensuite il ne prendra jamais la valeur 100 !


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°398268
Neeks
56k forever
Posté le 18-05-2003 à 02:09:58  profilanswer
 

thecoin > oui je le déclare à chaque fois, car la requête associée change...à chaque fois. J'avais peur que la requête soit "statique" en fait :heink:.
 
Bon, en fait j'a fait autrement : une fonction avec une boucle for, qui remplace le 1er curseur, et qui appelle une 2e fonction, dont le curseur n'est plus immbriqué...

n°399090
thecoin
Chasseur de chasseur de canard
Posté le 19-05-2003 à 08:43:51  profilanswer
 

Neeks a écrit :

thecoin > oui je le déclare à chaque fois, car la requête associée change...à chaque fois. J'avais peur que la requête soit "statique" en fait :heink:.
 
Bon, en fait j'a fait autrement : une fonction avec une boucle for, qui remplace le 1er curseur, et qui appelle une 2e fonction, dont le curseur n'est plus immbriqué...


 
Dans se cas la utilise des paramètres


---------------
Si tu regardes ce que le canard mange, tu ne mangeras pas de canard.
n°399091
Taz
bisounours-codeur
Posté le 19-05-2003 à 08:45:17  profilanswer
 

on s'en fout, le projet est rendu [:alphat]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Curseurs imbriqués -> deadloop :(

 

Sujets relatifs
S'exercer sur une Base oracleexistence de ORACLE 9i 32 bits pour HP UX 11
Existe-t-il une fonction équivalente au nvl de Oracle sous ACCESS?Rennomer un utilisateur oracle ?
[PHP] recuperer l'expression d'un agregat avec oracle 8formatage automatique d'un NUMBER en Oracle
[PERL] se connecter a une base Oracle avec DBIcrypter un mot de passe avant insertion dans Oracle ?
[Oracle] utiliser une sequence dans une insertion[Oracle] n00b queries help (je maitrise pas les sub queries)
Plus de sujets relatifs à : [Oracle] Curseurs imbriqués -> deadloop :(


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR