如何使用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;
答案 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