尝试将while循环转换为Pl / SQL中的基本循环

时间:2015-12-16 19:17:20

标签: loops plsql

  

这是我到目前为止所拥有的。

预期结果

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*

代码I<尝试:

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

这是一个简单的逻辑错误

1 个答案:

答案 0 :(得分: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