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

提取程序以在PL / SQL中查找阶乘时出现PLS-00103错误

如何解决提取程序以在PL / SQL中查找阶乘时出现PLS-00103错误

这是我在sqllive在线ide中执行的代码

def get_queryset(self):

它给了我一个pls-00103:在遇到以下情况之一时遇到了符号“&”:”错误

这有什么问题?

解决方法

SQL Live不是SQL * Plus。 “&”号用于SQL * Plus替换变量,在SQL Live中不起作用。您需要先编辑匿名块并在每次运行前提供一个值。

,

在这里我真的看不到需要pl / sql循环。您可以使用递归查询很好地做到这一点:

with cte (n,fac) as (
    select ? n,1 fac from dual
    union all 
    select n - 1,fac * n from cte where n > 1
)
select max(fac) as result from cte

问号代表查询的参数,即您要计算其阶乘的数字。

Demo on DB Fiddle :例如,当给定参数4时,查询返回:

<pre>
| RESULT |
| -----: |
|     24 |
</pre>

...是计算1 * 2 * 3 * 4的结果。

您也可以这样表达:

with cte (n,fac) as (
    select 4 n,4 fac from dual
    union all 
    select n - 1,fac * (n - 1) from cte where n > 1
)
select max(fac) as result from cte

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