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

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

【问题讨论】:

标签: oracle function loops plsql


【解决方案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;  
    

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2017-03-30
      相关资源
      最近更新 更多