如何解决在运行时取值并在 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 举报,一经查实,本站将立刻删除。