2015-12-16 3 views
1

Это то, что у меня есть до сих пор.Пытается преобразовать цикл while в базовый цикл в PL/SQL

Ожидаемый результат:

1+1 = 2 1+2 = 3 1+3 = 4 1+4 = 5 then 
2+1 = 3 2+2 = 4 so on until 4+4 = 8* 

код Я пробовал:

SET SERVEROUTPUT ON 
DECLARE 
    v_i number := 1; 
    v_j number := 1; 
    v_x number := 0; 
BEGIN 
    WHILE v_i < 5 LOOP 
     WHILE v_j < 5 LOOP 
      v_x := v_i + v_j; 
      DBMS_OUTPUT.PUT_LINE(v_i||'+'||v_j||' is: '||v_x); 
      v_j := v_j +1; 
     END LOOP; 
     v_i := v_i + 1; 
     v_j := 1; 
    END LOOP; 
    END; 
    /
    SET SERVEROUTPUT OFF 

решил. благодаря

SET SERVEROUTPUT ON 
DECLARE 
v_i number := 1; 
v_j number := 1; 
v_x number := 0; 
BEGIN 
LOOP 
v_x := v_i + v_j; 
DBMS_OUTPUT.PUT_LINE(v_i||'+'||v_j||' is: '||v_x); 
v_j := v_j + 1; 
IF v_j = 5 THEN 
v_j := 1; 
v_i := v_i + 1; 
EXIT WHEN v_i = 5; 
END IF; 
END LOOP; 
END; 
/
SET SERVEROUTPUT OFF 

это была простая логическая ошибка

+0

Каков вывод, который вы сейчас получаете? –

+0

Для цикла, пока –

+0

SQL> @ loop0 1 + 1: 2 1 + 2: 3 1 + 3: 4 1 + 4: 5 2 + 1: 3 2 + 2 это: 4 2 + 3: 5 2 + 4: 6 3 + 1: 4 3 + 2: 5 3 + 3: 6 3 + 4: 7 4 + 1 : 5 4 + 2 is: 6 4 + 3 is: 7 4 + 4 is: 8 PL/SQL процедура успешно завершен. –

ответ

0

Я не знаю, PI/SQL, но от того, что я понимаю, что это может делать то, что вы хотите. Я использовал отступ для ясности, удаляю его, если это не разрешено в PI/SQL

SET SERVEROUTPUT ON 
DECLARE 
v_i number := 1; 
v_j number := 1; 
v_x number := 0; 
BEGIN 
LOOP 
    v_x := v_i + v_j; 
    DBMS_OUTPUT.PUT_LINE(v_i||'+'||v_j||' is: '||v_x); 
    v_j := v_j + 1; 
    IF v_j = 5 THEN 
     IF v_i < 4 THEN 
     v_i := v_i + 1; 
     v_j := 1; 
     ELSE 
     EXIT; 
     END IF; 
    END IF; 
END LOOP; 
END; 
/
SET SERVEROUTPUT OFF 
Смежные вопросы