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:46:45 -0700
Message-ID: <1155235605.382271.303300@h48g2000cwc.googlegroups.com>

DA Morgan 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

>

> In answer to your question ... no there isn't. But also in your
> situation there is no functional difference between the two.
>

> Another option would be this though I don't like it much either:
>

> DECLARE
> break EXCEPTION;
> BEGIN
> LOOP
> BEGIN
> <your code here>
> RAISE break;
> <the rest of your code here>
> EXCEPTION
> WHEN break THEN
> NULL;
> END;
> END LOOP;
> END;
>

> --
> 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

Thanks, Daniel. Received on Thu Aug 10 2006 - 13:46:45 CDT

Original text of this message

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