Re: PL/SQL best practices ? How to go to end of loop (i.e. next record)

Ah, the perfect opportunity to fiddle with conditional compilation as well then.




________________________________
From: Michael Moore <michaeljmoore@xxxxxxxxx>
To: Tim Hall <tim@xxxxxxxxxxxxxxx>
Cc: "jslowik@xxxxxxxxx" <jslowik@xxxxxxxxx>; "oracle-l@xxxxxxxxxxxxx" 
<oracle-l@xxxxxxxxxxxxx>
Sent: Wed, 9 February, 2011 22:20:34
Subject: Re: PL/SQL best practices ? How to go to end of loop (i.e. next record)

Tim,
We are almost on 11g. This is the perfect construct for my problem. Thanks!
Regards,
Mike


On Wed, Feb 9, 2011 at 2:10 PM, Tim Hall <tim@xxxxxxxxxxxxxxx> wrote:

Hi.
>
>If you are using Oracle 11g you can use the CONTINUE or CONTINUE WHEN.
>
>http://www.oracle-base.com/articles/11g/PlsqlNewFeaturesAndEnhancements_11gR1.php#continue_statement
>
>
>Cheers
>
>Tim...
>
>
>On Wednesday, February 9, 2011, Joel Slowik <jslowik@xxxxxxxxx> wrote:
>> Let me re-state what I just said, I shouldn’t have said I would never use a 
>>goto. I should have said – I will not be using goto’s anytime in the near 
>>future 
>>unless something or someone has a compelling reason for me to do so. I am 
>>open-minded after all From: Joel Slowik
>> Sent: Wednesday, February 09, 2011 4:53 PM
>> To: michaeljmoore@xxxxxxxxx; oracle-l@xxxxxxxxxxxxx
>> Subject: RE: PL/SQL best practices ? How to go to end of loop (i.e. next 
>>record) I would never use a goto – that’s a very messy way to write code – 
>>imho 
>>is all. From: oracle-l-bounce@xxxxxxxxxxxxx 
>>[mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of Michael Moore
>> Sent: Wednesday, February 09, 2011 4:45 PM
>> To: oracle-l@xxxxxxxxxxxxx
>> Subject: PL/SQL best practices ? How to go to end of loop (i.e. next record) 
>> I 
>>can think of many ways to do this but is there a definitive best practice?I'm 
>>sure there must be articles on this somewhere, so links as well as comments 
>>are 
>>appreciated.  BEGINfor cur1 in (SELECT bla bla bla)    LOOP      If 
>>something_I_dont_like then skip to next record in cur1;      Lots and lots of 
>>code goes here.      END  LOOP;END; Some options:1) You could set up a label 
>>and 
>>use a goto.2) You could set up an inner block and use RAISE to break out: 3) 
>>You 
>>could do something like : BEGINfor cur1 in (SELECT bla bla bla)    LOOP       
>>  
>><<process_this_record>>         FOR c2 IN (SELECT * FROM DUAL) -- creates an 
>>exitable one-time loop         LOOP             If something then             
>>   
>>    exit process_this_record;               Lots and lots of code goes here.  
>>    
>>      END LOOP process_this_record;    END  LOOP;END; 4) You could just nest 
>> IF 
>>statements like: BEGINfor cur1 in (SELECT bla bla bla)    LOOP         IF 
>>keep_processing_this_transaction THEN         BEGIN               Lots and 
>>lots 
>>of code goes here.         END IF;    END  LOOP;END; So, what is the best 
>>way? Regards,Mike
>
>>
>> Confidentiality Note: This electronic message transmission is intended only 
>> for 
>>the person or entity to which it is addressed and may contain information 
>>that 
>>is privileged, confidential or otherwise protected from disclosure. If you 
>>have 
>>received this transmission, but are not the intended recipient, you are 
>>hereby 
>>notified that any disclosure, copying, distribution or use of the contents of 
>>this information is strictly prohibited. If you have received this e-mail in 
>>error, please contact Continuum Performance Systems at {203.245.5000} and 
>>delete 
>>and destroy the original message and all copies.
>>
>

Other related posts: