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

  • From: Niall Litchfield <niall.litchfield@xxxxxxxxx>
  • To: howard.latham@xxxxxxxxx
  • Date: Thu, 10 Feb 2011 16:58:32 +0000

Well "Best Practices" features in that article

Best practices can also be defined as the most efficient (least amount of
> effort) and effective (best results) way of accomplishing a task, based on
> repeatable procedures that have proven themselves over time for large
> numbers of people.


Although exiting a loop is a singular task so probably deserves the singular
noun.

On Thu, Feb 10, 2011 at 3:59 PM, Howard Latham <howard.latham@xxxxxxxxx>wrote:

> Just a little thing - sorry its irritating me The Expression is Best
> Practice not Best Practices.
>
> http://en.wikipedia.org/wiki/Best_practice
>
>
>
>
> On 9 February 2011 21:45, Michael Moore <michaeljmoore@xxxxxxxxx> wrote:
>
>> 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.
>>
>> BEGIN
>> for 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 :
>>
>> BEGIN
>> for 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:
>>
>> BEGIN
>> for 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
>>
>
>
>
> --
> Howard A. Latham
>
> Sent from my Nokia N97
>
>


-- 
Niall Litchfield
Oracle DBA
http://www.orawin.info

Other related posts: