当我使用select语句调用函数时 [从对偶中选择事实(5);] 我得到的输出为1.你们可以从下面的代码中帮我吗
create or replace function fact(num in number)
return number
Is
res_fact number:=1;
begin
for i in 1..5 loop
res_fact:=res_fact*i;
dbms_output.put_line(res_fact);
-- dbms_output.put_line('Factorial of '||num||' = '||res_fact);
return res_fact;
end loop;
dbms_output.put_line(res_fact);
end;
res_fact=res_fact*i;
as i call function i used to get the factorial of that input number
res_fact=5*4*3*2*1;
res_fact=120
答案 0 :(得分:0)
将此代码设为“ return res_fact;”。循环外,您的代码将运行,但是以上代码仅适用于5。
答案 1 :(得分:0)
两个问题... 首先,您需要将return语句移出循环。现在,它会在循环的第一遍返回。
第二,您将忽略输入参数,并且总是将阶乘设为5而不是传入的值(一旦移动return语句。
请参见下面的代码
create or replace function fact(num in number)
return number
Is
res_fact number:=1;
begin
for i in 1..num loop
res_fact:=res_fact*i;
end loop;
dbms_output.put_line('Factorial of '||num||' = '||res_fact);
return res_fact;
end;