编写一个 PL/SQL 代码来计算数字(1-10)的 2 的幂?

Posted

技术标签:

【中文标题】编写一个 PL/SQL 代码来计算数字(1-10)的 2 的幂?【英文标题】:Write a PL/SQL code to calculate the power of 2 for numbers (1-10)? 【发布时间】:2020-08-03 12:00:08 【问题描述】:

如何编写 PL/SQL 代码来计算数字 (1-10) 的 2 的幂

【问题讨论】:

欢迎来到 SO!请先阅读how to ask a good question。 似乎是一些锻炼的问题。 【参考方案1】:

使用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 代码” 所以不是免费的代码编写服务。向我们展示您的最大努力,然后其他人可以指出您做错了什么。【参考方案2】:

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> 

【讨论】:

【参考方案3】:

递归 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;  

【讨论】:

以上是关于编写一个 PL/SQL 代码来计算数字(1-10)的 2 的幂?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算oracle pl/sql中数字的位数?

oracle PL/SQL高级编程

PL/SQL 错误 - 需要说明

如何编写一个 PL/SQL 程序来打印出看起来像 xml 格式的字符串

ORA-06502: PL/SQL: 数字或值错误: NULL 索引表键值

我需要一个 pl sql 程序来重置密码