Home

Nested blocks should be labeled

Rule description

  • Nested blocks should be labeled

 

Non-compliant Code Example

DECLARE
  first_name  VARCHAR2(25);
  customer_id     NUMBER(6) := 120;
BEGIN
  	
  <<get_customer_name>>
  SELECT FIRSTNAME INTO first_name
  FROM CUSTOMERS
  WHERE Id = customer_id;
  
  BEGIN                 --Non compliant code (Nested block is not labeled)
    DBMS_OUTPUT.PUT_LINE (first_name);
    customer_id := customer_id + 1;
 
    IF customer_id < 200 THEN
      GOTO get_customer_name;
    END IF;
  
  END;
END;

Compliant Code Example

DECLARE
  first_name  VARCHAR2(25);
  customer_id     NUMBER(6) := 120;
BEGIN
  	
  <<get_customer_name>>
  SELECT FIRSTNAME INTO first_name
  FROM CUSTOMERS
  WHERE Id = customer_id;
  
    <<get_customer_name_inner>>
    BEGIN               --Compliant code (Nested block is labeled)
        DBMS_OUTPUT.PUT_LINE (first_name);
        customer_id := customer_id + 1;
 
        IF customer_id < 200 THEN
          GOTO get_customer_name;
        END IF;
    END;
END;
Visual Expert 2020
 VEPLSQLRULE158