问题描述
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