Напишите код PL / SQL для вычисления степени двойки для чисел (1-10)? - PullRequest
0 голосов
/ 03 августа 2020

Как я могу написать PL / SQL код , чтобы вычислить степень двойки для чисел (1-10)

Ответы [ 3 ]

2 голосов
/ 03 августа 2020

Используйте функцию 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
0 голосов
/ 05 августа 2020

Это делает рекурсивный 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;  
0 голосов
/ 03 августа 2020

PL / SQL это - функция, которая использует al oop для вычисления результата.

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> 
...