[postgresql] quitter un LOOP quand le curseur arrive a sa fin

quitter un LOOP quand le curseur arrive a sa fin [postgresql] - SQL/NoSQL - Programmation

Marsh Posté le 11-12-2003 à 16:01:02    

Bonjour,
Me reste plus que ca à faire et je trouve pas ;)  
j ai ca :  
 
open curs
LOOP
  fetch curs ....
  ..........
EXIT WHEN   ;
end loop;
...
 
 
Je ne sais pas quoi mettre derriere WHEN,  
j ai essaye sqlcode=100, sqcla.sqlcode=100  et ca marche pas... et d'autre plus farfelus ...
 
merci d avance


Message édité par GUG le 11-12-2003 à 16:01:52
Reply

Marsh Posté le 11-12-2003 à 16:01:02   

Reply

Marsh Posté le 12-12-2003 à 08:37:32    

siouplait ;)

Reply

Marsh Posté le 12-12-2003 à 09:53:25    

salut, je ne sais pas en postgresql, mais avec oracle c'est un truc du genre

Code :
  1. exit when curs%NOTFOUND;

, tu peux toujours essayer...


Message édité par dalcap le 12-12-2003 à 09:53:51
Reply

Marsh Posté le 12-12-2003 à 10:27:20    

il me crit dessus ;)
merci qd meme  
 

Code :
  1. data=> SELECT fc_com();
  2. NOTICE:  Error occurred while executing PL/pgSQL function fc_com
  3. NOTICE:  line 20 at exit
  4. ERROR:  Attribute 'notfound' not found
  5. data=>

Reply

Marsh Posté le 12-12-2003 à 10:28:13    

Code :
  1. create or replace  FUNCTION fc_com () RETURNS INTEGER AS '
  2. DECLARE
  3. c_com CURSOR for select * from current_com order by idfour;
  4. prod varchar(9);
  5. four varchar(5);
  6. qte int;
  7. cfour varchar(8);
  8. bon int;
  9. BEGIN
  10. open c_com;
  11. fetch c_com into prod,qte,cfour;
  12. LOOP
  13. four := cfour;
  14.         WHILE four = cfour LOOP
  15.                 insert into boncom(idfour) VALUES (cfour);
  16.                 select MAX(idbon) into bon from boncom;
  17.                 insert into comfour(idbon, idprod, qtebon) VALUES (bon, prod, qte);
  18.                 fetch c_com into prod,qte,cfour;
  19.         end loop;
  20. exit when c_com%NOTFOUND;
  21. end loop;
  22. close c_com;
  23. delete from current_com;
  24. RETURN 1;
  25. END;
  26. ' LANGUAGE 'plpgsql';

Reply

Marsh Posté le 12-12-2003 à 14:04:04    

salut,
 
j'ai fait une recherche dans google, je n'ai pas trouvé de résultat concluant dans les premiers que j'ai regardés...
sur le site de postgresql, il n'existe pas de 'notfound', donc ct une mauvaise idée, dsl...


Message édité par dalcap le 12-12-2003 à 14:04:19
Reply

Marsh Posté le 12-12-2003 à 14:06:34    

heu, idée à 2 balles
tu peux peut-être compter le nombre de lignes retournées via une première requète, et ensuite faire le fetch de tes N lignes qui t'intéressent ???
en attendant d'avoir la solution exacte, ça peut peut-être te dépanner....

Reply

Marsh Posté le 12-12-2003 à 15:20:23    

Citation :

FETCH retrieves the next row from the cursor into a target, which may be a row variable, a record variable, or a comma-separated list of simple variables, just like SELECT INTO. As with SELECT INTO, the special variable FOUND may be checked to see whether a row was obtained or not.


 
C'est FOUND q'il faut tester, pas NOTFOUND
 
open curs  
LOOP
 fetch curs ....  
 EXIT WHEN NOT FOUND;  
 ..............
end loop;  
...  


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 12-12-2003 à 15:47:27    

Argh !
merci...
j'avais fait une recherche sur NOTFOUND (comme dans oracle), mais pas sur FOUND.... dsl
 
merci Mara's Dad
..
GUG, ça résoud ton problème ????

Reply

Marsh Posté le 12-12-2003 à 16:49:14    

dalcap a écrit :

heu, idée à 2 balles
tu peux peut-être compter le nombre de lignes retournées via une première requète, et ensuite faire le fetch de tes N lignes qui t'intéressent ???
en attendant d'avoir la solution exacte, ça peut peut-être te dépanner....


 
c'est ce que j ai fait mais c'est 'grouikkk'
 
 
merci a vous deux, j'essaye ca euh  la semaine prochaine :D

Reply

Marsh Posté le 12-12-2003 à 16:49:14   

Reply

Marsh Posté le 12-12-2003 à 16:56:50    

[rage on]
QUOI? c'est grouikkk :fou:  
 
dis-le que je programme comme un porc... :kaola:  
...ça m'apprendra à vouloir être utile...  
engagez vous qu'ils disaient...
[rage off]
 
plus sérieusement, ct vraiment une solution pour dépanner, vu que je ne connaissais pas postgres...
 
mais Mara's dad doit avoir raison, donc ça va marcher, sans cote de porc... :lol:


Message édité par dalcap le 12-12-2003 à 16:59:21
Reply

Marsh Posté le 12-12-2003 à 17:00:21    

dalcap a écrit :

QUOI? c'est grouikkk
 
dis-le que je programme comme un porc...
...ça m'apprendra à vouloir être utile... engagez vous qu'ils disaient...


 
keep cool :)
d ailleur je trouve que le tour de gaule et obelix et companie sont enormes :D
c'est y pas plus jolie un jolie when not found ;) :D


Message édité par GUG le 12-12-2003 à 17:01:49
Reply

Marsh Posté le 12-12-2003 à 17:01:25    

dalcap a écrit :

[rage on]
QUOI? c'est grouikkk :fou:  
 
dis-le que je programme comme un porc... :kaola:  
...ça m'apprendra à vouloir être utile...  
engagez vous qu'ils disaient...
[rage off]
 
plus sérieusement, ct vraiment une solution pour dépanner, vu que je ne connaissais pas postgres...
 
mais Mara's dad doit avoir raison, donc ça va marcher, sans cote de porc... :lol:


 
ouais mais une cote de porc au barbeuk c'est pas mauvais ;)


Message édité par GUG le 12-12-2003 à 17:11:23
Reply

Marsh Posté le 12-12-2003 à 17:03:06    

GUG a écrit :


 
ouais mais une cote de porc au barbac c'est pas mauvais ;)


 :non: barbeuk [:aloy]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 12-12-2003 à 17:11:39    

:lol:  :lol:  

Reply

Marsh Posté le 12-12-2003 à 17:11:40    

argh, grillaid sur le edit, 3 fois que je me fais avoir aujourd'hui...z'etes trop rapides... :D

Reply

Marsh Posté le 13-12-2003 à 13:52:28    

c'est bon ca marche merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed