微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在运行时取值并在 PlSQL 中打印它的阶乘

如何解决在运行时取值并在 PlSQL 中打印它的阶乘

我试图在运行时获取一个数字的阶乘,但出现错误

DECLARE
fact number :=1;
n number := &1;
BEGIN
while n > 0 loop
  fact:=n*fact;
  n:=n-1;
end loop;
dbms_output.put_line(fact);
END;

解决方法

你可以尝试用数学来实现阶乘。

SELECT EXP(SUM(LN(Level))) factorial
FROM dual
CONNECT BY Level <= &1
,

/ 放在新行的末尾并在没有替换变量的情况下运行它,您的代码就可以工作了:

DECLARE
fact number :=1;
n number := 3;
BEGIN
while n > 0 loop
  fact:=n*fact;
  n:=n-1;
end loop;
dbms_output.put_line(fact);
END;
/

和输出:

6

dbfiddle here

既然您没有在问题中说明错误是什么,那么错误很可能与以下内容有关:

  • 丢失的 / 和 Oracle 试图将其解析为 SQL 语句而不是 PL/SQL 块;或
  • 您在提供替换变量时输入的内容(但由于您再次未提及您要替换的内容,我们无法对此发表评论)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。