在Oracle中使用循环的前8个方格数?

时间:2017-09-28 02:28:43

标签: oracle

如何使用Oracle中的循环计算前8个方块数?

declare
    total integer;
    i integer;
    begin
    total := 0;
    i := 1;
    loop
    total := total *i;
    i := i*total;
    exit when i > 8;
    end loop;
    dbms_output.put_line('the total is ' || total); end;

2 个答案:

答案 0 :(得分:0)

请仔细检查这个片段:

i := 1;
loop
   total := total *i;
   i := i*total;
   exit when i > 8;
end loop;

exit when i > 8;大于8时,i命令应该退出循环,但i在循环中总是1,所以循环是无限的,你永远不会得到任何结果。
您必须使用i指令在循环中增加i := i + 1; somwhere。

答案 1 :(得分:0)

您的作业,但为问题提供解决方案

SELECT LEVEL * LEVEL squares
      FROM DUAL
CONNECT BY LEVEL <= 8;

<强>输出

1
4
9
16
25
36
49
64