Программа PL/SQL для отображения использования вложенного цикла. Кажется, все в порядке, но отображается ошибка»Обнаружен символ «>» при ожидании одного из следующих действий:»

#oracle #loops #plsql

Вопрос:

 DECLARE  m PLS_INTEGER := 0; n PLS_INTEGER := 0; k PLS_INTEGER;  BEGIN  lt;gt;  LOOP  n := n   1; k := 0;  DBMS_OUTPUT.PUT_LINE ('The values of inner loop are: ');  lt;gt;  LOOP  k := k   1;  m := m   n * k; -- Sum several products    EXIT inner_loop WHEN (k gt; 3);  DBMS_OUTPUT.PUT_LINE ('n='||TO_CHAR(n)||' k='||TO_CHAR(k)||' m='||TO_CHAR(m));  EXIT outer_loop WHEN ((n * k) gt; 6); END LOOP inner_loop;  END LOOP outer_loop;  DBMS_OUTPUT.PUT_LINE  ('The total sum after completing the process is: ' || TO_CHAR(m));   END;  /  

Комментарии:

1. Пожалуйста, отформатируйте код!

2. Сообщение об ошибке неполное, полное сообщение об ошибке указывает номер строки с неожиданным символом. В любом случае, эти строки «lt;gt;» не имеют никакого отношения к вашему коду.

Ответ №1:

Вы неправильно обозначили петли. Вместо того, чтобы просто lt;gt; (что просто означает, что что-то отличается от чего-то другого), вы должны были использовать, например lt;lt;outer_loopgt;gt; . Когда это исправлено, ваш код выглядит следующим образом:

 SQLgt; set serveroutput on; SQLgt; DECLARE  2 m PLS_INTEGER := 0;  3 n PLS_INTEGER := 0;  4 k PLS_INTEGER;  5 BEGIN  6 lt;lt;outer_loopgt;gt;  7 LOOP  8 n := n   1; k := 0;  9 DBMS_OUTPUT.PUT_LINE ('The values of inner loop are: ');  10  11 lt;lt;inner_loopgt;gt;  12 LOOP  13 k := k   1;  14 m := m   n * k; -- Sum several products  15  16 EXIT inner_loop WHEN (k gt; 3);  17 DBMS_OUTPUT.PUT_LINE ('n='||TO_CHAR(n)||' k='||TO_CHAR(k)||' m='||TO_CHAR(m));  18 EXIT outer_loop WHEN ((n * k) gt; 6);  19 END LOOP inner_loop;  20 END LOOP outer_loop;  21  22 DBMS_OUTPUT.PUT_LINE('The total sum after completing the process is: ' || TO_CHAR(m));  23 END;  24 /  

 The values of inner loop are: n=1 k=1 m=1 n=1 k=2 m=3 n=1 k=3 m=6 The values of inner loop are: n=2 k=1 m=12 n=2 k=2 m=16 n=2 k=3 m=22 The values of inner loop are: n=3 k=1 m=33 n=3 k=2 m=39 n=3 k=3 m=48 The total sum after completing the process is: 48  PL/SQL procedure successfully completed.  SQLgt;