Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: what is the SQL equivalent of 'continue' and 'break' in C ?

Re: what is the SQL equivalent of 'continue' and 'break' in C ?

From: <happyardy_at_gmail.com>
Date: 10 Aug 2006 11:47:24 -0700
Message-ID: <1155235644.880599.132710@m79g2000cwm.googlegroups.com>

Rauf Sarwar wrote:
> happyardy_at_gmail.com wrote:
> > DA Morgan wrote:
> > > happyardy_at_gmail.com wrote:
> > > > Scott wrote:
> > > >> happyardy_at_gmail.com wrote:
> > > >>> what is the SQL equivalent of 'continue' and 'break' in C ?
> > > >>>
> > > >>> like can I do this...
> > > >>>
> > > >>>
> > > >>> for counter in 1..10
> > > >>> if(something something)
> > > >>> ( if (something)
> > > >>> ( if(something)
> > > >>> then continue;
> > > >>>
> > > >>> //Rest of the for loop
> > > >>>
> > > >>> end loop;
> > > >>>
> > > >>> Would it start the next iteration without processing the rest of the
> > > >>> loop ?
> > > >>>
> > > >>> thanks
> > > >>> - Ardy
> > > >> If I understand the question, something like this in PL/SQL
> > > >>
> > > >> loop
> > > >>
> > > >> loop
> > > >> if something
> > > >> then
> > > >> exit; -- continue, i.e. go on with the rest of the main loop
> > > >> end if;
> > > >>
> > > >> end loop;
> > > >>
> > > >> if something_else
> > > >> then
> > > >> exit; -- break, i.e. get out of the main loop
> > > >> end if;
> > > >> -- rest of the for loop
> > > >>
> > > >> end loop;
> > > >
> > > > Scott,
> > > > I am a little confused about if this works the way, 'continue' works in
> > > > C language. I mean in the middle of a for loop if I have a "continue;"
> > > > in C language, the control just goes to the top of the loop and starts
> > > > a new iteration.
> > > > In your code here, 'exit'' would break me out of the inner loop and the
> > > > control would go to first statement(if any) that is outside the inner
> > > > loop. I have a bunch of statements in my code after the inner loop.
> > > > What I want to happen is that the control goes directly to the next
> > > > iteration without trying to execute any of the remaining code outside
> > > > of the inner loop..
> > > > Your code would hold good if it is the last piece of code in my outer
> > > > loop(for loop). That means it would be good if as soon as my inner loop
> > > > ends, my outer loop ends too.
> > > >
> > > > Not saying that your code is wrong but your code will go down and
> > > > execute my remaining statements after the inner loop though I dont want
> > > > it to. If I wanted to do that then I wouldnt want a 'continue' like
> > > > working, now would I ?
> > > >
> > > > Please let me know if I am not understanding correctly and have
> > > > misinterpreted anything.
> > > > thanks & regards
> > > > - Rahul
> > >
> > > If you want GOTO capability in Oracle use a label.
> > >
> > > http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14261/goto_statement.htm#LNPLS01323
> > >
> > > I don't have any demos in the library that I can recall as I
> > > find them rather inelegant.
> > > --
> > > Daniel A. Morgan
> > > University of Washington
> > > damorgan_at_x.washington.edu
> > > (replace x with u to respond)
> > > Puget Sound Oracle Users Group
> > > www.psoug.org
> >
> > Daniel,
> > I try to stay away from GOTO. GOTOs are not evils and are helpful
> > sometimes but still I dont like to use them. I avoid them as much as
> > possible.
> > I was trying to find out if SQL has any keyword that is equivalent of
> > 'continue' in C. C has GOTO too and I have always wanted to avoid that.
> > thanks
> > - Ardy

>

> GOTO may not be very popular but in your situation... this may be the
> only option in plsql that you can use. Alternately, you can make use of
> a boolean flag like,
>

> declare
> bok_ boolean;
> begin
> for ... loop
> bok_ := true;
> for ... loop
> if (something) then
> bok_ := false;
> exit; -- This will exit the inner loop with bok_ = false
> end if;
> end loop;
> if (bok_) then
> -- rest of the code
> end if;
> end loop;
> end;
> /

Thanks, Rauf Received on Thu Aug 10 2006 - 13:47:24 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US