Name

STYL-06: Self-document using block and loop labels.

Synopsis

While PL/SQL labels (identifiers within double angle brackets, such as <<yearly_analysis>>) are most often associated with GOTOs and are therefore disdained, they can be a big help in improving the readability of code.

Use a label directly in front of loops and nested anonymous blocks:

  • To name that portion of code and thereby self-document what it’s doing

  • So you can repeat that name with the END statement of that block or loop

This recommendation is especially important when you have multiple nestings of loops (and possibly inconsistent indentation), as in the following:

LOOP
   <body>
   WHILE <condition>
   LOOP
      <while body>
   END LOOP;
END LOOP;

Example

I use labels for a block and two nested loops, and then apply them in the appropriate END statements. I can now easily see which loop and block is ending, no matter how badly my code is indented!

CREATE OR REPLACE PROCEDURE display_book_usage
IS
BEGIN
   <<best_seller_review>>
   DECLARE
      CURSOR yearly_analysis_cur IS SELECT ...;
      CURSOR monthly_analysis_cur IS SELECT ...;
   BEGIN
      <<yearly_analysis>>
      FOR book_rec IN yearly_analysis_cur (2000)
      LOOP
         <<monthly_analysis>>
         FOR month_rec IN
             monthly_analysis_cur (
                yearly_analysis_cur%rowcount)
         LOOP
            ... lots of month-related code ...
         END LOOP monthly_analysis;
         ... lots of year-related code ...
      END LOOP yearly_analysis;
   END best_seller_review;
END display_book_usage;

Benefits

If you use labels, it’s much easier to read your code, especially if it ...

Get Oracle PL/SQL Best Practices now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.