PL/SQL : équivalent au continue ?!?

Fermé
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 - 28 avril 2003 à 14:05
 Utilisateur anonyme - 23 mars 2011 à 13:49
Salut tout le monde, je recherche une petite instruction PL/SQL mais j'ai po l'impression que ça existe... Alors j'appelle CCM à la rescousse ;-)

Une boucle du genre :

FOR i in 1..10
LOOP
IF pof(i)=2 THEN
/* là je voudrais passer directement au i suivant sans
aller jusqu'au END LOOP */
END IF;
END LOOP;

Pour les fanas de C dans mon genre, c l'équivalent du continue... mais en PLSQL pof compilo pas d'accord.

Merci d'avance les gens.
@++
--------------------
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?

10 réponses

ranjok Messages postés 309 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 23 avril 2019 35
7 avril 2009 à 08:59
Je retire ce que j'ai dit
Utilisez GOTO <<label>> pour l'équivalent de CONTINUE de SQL Server et C++
2
montrealinfo
8 mai 2008 à 21:50
saluuut
j ai besoin de votre aide,il faut que je dommande a l utilisateur d entrer un nombre N ,et je dois afficher les N premiers employes de la tabe,an stockant le nombre N dans une valeur.
merciii
1
tu n'as qu'a introduire "exit" dans l'instruction "IF" pour sortir de la boucle loop...

sinon tu peux aussi utiliser d'autres types de boucles...
comme ....
i=0
Sort_de_la_boucle = false
LOOP WHILE (Sort_de_la_boucle) or ( i =10)
i++
IF pof(i)=2 THEN
Sort_de_la_boucle = true;
END IF;
...
END LOOP

essaie et répond moi... si j'ai pas oublié
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
28 avril 2003 à 15:49
Je croyais pourtant avoir posé clairement la question... En me relisant, je dirais même que j'en suis sûr ;-p.

Je ne cherche pas à savoir comment on sort d'une boucle : en effet, je connais l'instruction EXIT.

Si tu as lu toute la question, je cherche l'équivalent du "continue" en C pour le PL/SQL : C'est à dire, dès que cette instruction est exécutée on rattaque la loop avec l'indice suivant sans avoir exécutée aucune instruction après ce "continue" PL/SQL.

Ici tu me fais quitter la boucle : ce n'est pas ce que je cherche.
En gros, je valide un tableau, et y a des conditions qui valident en une fois l'élément en cours => donc je passe direct à l'élement suivant mais SURTOUT pas quitter.

Voilà chui pas sûr de pas avoir été dans cette réponse moins clair que la question d'origine, mais j'espère quand même qu'un fort répondra ;)
@++
-------------------

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
soit j'ai encore pas pigé, ... soit tu es en train de te noyer dans un ver d'eau...

dans les deux cas un fort répendra!!!
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
29 avril 2003 à 09:58
C'est pas la peine de t'énerver ;-)
Est ce que tu as déjà programmé en C ou en C++ ? Je crois me souvenir que cette instruction est aussi présente en Java.

Quand dans une boucle tu veux passer directement à l'itération suivante, tu écris simplement l'instruction "continue;" .

c'est le contraire du break; (en C) qui lui, sort de la boucle et c'est ce que tu me propose avec le EXIT en PL/SQL ! Or j'ai bien dit que je ne voulais pas m'arrêter.

Soit tu comprends cette question et tu sais répondre, soit tu ne réponds pas et tu ne pourries pas le forum. Quand je ne sais pas répondre, je change de topic moi... Et cherche un peu, tu verras que j'ai déjà répondu à quelques sujets.

Allez, sans rancune et @+

Putain chsens que ça va troller...

-------------------
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
Il y a une solution avec le GOTO Ca peut rebuter des puristes, mais cela correspond à un équivalent du continue;

FOR i IN 1..50 LOOP
IF done THEN
GOTO end_loop;
END IF;
...
<<end_loop>>
NULL; -- an executable statement
END LOOP;
0
Bonjour,

J'ai le même problème, je pense que je vais m'orienter plutôt vers une structure du type

FOR i in 1..10
LOOP
IF NOT pof(i)=2 THEN
/* j'effectue réellement ma boucle loop */

END IF;
END LOOP;

Je pense qu'à priori ca doit résoudre le problème.

Amicalement
0
ranjok Messages postés 309 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 23 avril 2019 35
6 avril 2009 à 15:17
Il semble que CONTINUE existe en Oracle!!! Selon cet article il y a EXIT et CONTINUE pour sortir ou recommencer une boucle: http://www.demos.fr/formation-oracle-plsql-et-objets-proceduraux-stockes/5275.htm
0
La réponse est ici:
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/controlstructures.htm
0
Utilisateur anonyme
23 mars 2011 à 13:49
Bonjour,

Excellente trouvaille et très intéressant, étant actuellement en pleine programmation
de rapports en PLSQL sous TOAD.

Est-ce que tu connais TOAD ?

Actuellement je fais des recherches pour savoir pourquoi TOAD 9.7 plante
lorsque je débugue mes rapports lors de l'instruction [ PIPE ROW v_Record; ].

Est-ce que tu connais ce problème ?

Cdt

Lupin
0