为阶乘程序创建plsql函数

为阶乘程序创建plsql函数,plsql,Plsql,当我使用select语句调用函数时 [从dual中选择事实(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.pu

当我使用select语句调用函数时 [从dual中选择事实(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
使此代码“return res_fact;”脱离您的代码将运行的循环,但上面的代码只工作5天

两个问题。。。。 首先,您需要将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;

这看起来像是家庭作业,所以我不会给出直接的答案,但会给出一些提示:参数
num
应该做什么?您希望返回什么以及何时返回?我希望使用plsql语句执行函数声明v_事实编号;开始v_事实:=fact(8);dbms_output.put_line(v_fact);end;@如果您已经在任何地方创建了一个函数,请使用偶数过程或select语句您可以给我您的gmail id吗plz@Zealcollege你还有什么问题要面对吗。。kkr13590@gmail.comneed和你在一起聊天