为阶乘程序创建plsql函数

时间:2019-01-02 05:03:00

标签: plsql

当我使用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

2 个答案:

答案 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;