【发布时间】:2020-08-03 12:00:08
【问题描述】:
如何编写 PL/SQL 代码来计算数字 (1-10) 的 2 的幂
【问题讨论】:
-
欢迎来到 SO!请先阅读how to ask a good question。
-
似乎是一些锻炼的问题。
标签: oracle function loops plsql
如何编写 PL/SQL 代码来计算数字 (1-10) 的 2 的幂
【问题讨论】:
标签: oracle function loops plsql
使用power SQL 函数
select rownum rn, power(2, rownum) pwr
from dual
connect by level <= 10;
RN PWR
---------- ----------
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
10 rows selected
【讨论】:
PL/SQL 它是一个使用循环来计算结果的函数。
SQL> create or replace function f_power (n in number)
2 return number
3 is
4 retval number := 2;
5 begin
6 for i in 2 .. n loop
7 retval := retval * 2;
8 end loop;
9 return retval;
10 end;
11 /
Function created.
SQL> select level as n, f_power(level) result
2 from dual
3 connect by level <= 10;
N RESULT
---------- ----------
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
10 rows selected.
SQL>
【讨论】:
递归 CTE 可以做到这一点。
with pows( n, pown) as
( select 1, 2 from dual
union all
select n+1, pown*2
from pows
where n<&N
)
select * from pows;
【讨论】: