#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;