oracle中使用sql递归算出1加到100的值

写成存储过程
这是道面试题
面试的时候没写出来
看看答案
注意是要递归算法的,不要循环的
o(╯□╰)o

declare
i int;
k int;
begin
  i:=1;
  k:=0;
  while i<=100 loop
    k:=k+i;
    i:=i+1;
end loop;
dbms_output.put_line(k);
end;

 ä¸Šè¾¹æ˜¯ç”¨while循环,下边这个用for循环

declare
k int;
begin
  k:=0;
  for i in 1..100 loop
    k:=k+i;
end loop;
dbms_output.put_line(k);
end;追问

用递归算法啊大哥
你这个是循环不是递归

追答declare
i int;
j int;
begin
i:=100;
with t as
(select sum(rownum) rn from dual connect by rownum<=i)
select rn into j from t;
dbms_output.put_line(j);
end;

这样?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-21
--自己调用自己才是递归

create or replace function addn(n number)
return number is
begin
if n=1 then
return 1;
else
return n+addn(n-1);
end if;
end;
/
SQL> select addn(100) from dual;

ADDN(100)
----------
5050本回答被提问者采纳