Увеличение генерации чисел внутри цикла (SQL, Oracle) - PullRequest
0 голосов
/ 04 февраля 2019

Я сгенерировал 1 раунд чисел:

set serveroutput on
declare 
i number(9);
x number(9) := 0;
begin
 for i in 0..7 loop   
  DBMS_OUTPUT.PUT_LINE(x);
  x:=x+1;
 end loop;
end;

Результат: 0, 1, 2, 3 .... 7

Мой следующий раунд должен сгенерировать числа: 10, 11, 12 .... 17

Общий объем должен выглядеть следующим образом:

0    1    2    3    4    5    6   7
10   11   12   13   14   15   16  17
20   21   22   23   24   25   26  27
...
80   81   82   83   84   85   86  87  

Как я могу прыгнуть 3 между каждым раундом?Я увеличу счетчик до 81.

Ответы [ 4 ]

0 голосов
/ 04 февраля 2019

Похоже, вы хотите вывести 9 раз 7 чисел.Это один цикл, который выполняется 9 раз и внутри цикла, который выполняется 7 раз, я бы сказал.Например,

begin
 for i in 0..8 loop   
   for j in 0..7 loop   
     dbms_output.put(i * 10 + j);
     dbms_output.put(' ');
   end loop;
   dbms_output.put_line('');
 end loop;
end;
0 голосов
/ 04 февраля 2019

Логика: если i mod 10 = 7, то увеличиваем на 3, иначе увеличиваем на единицу.Таким образом,

set serveroutput on
declare 
i number(9);
x number(9) := 0;
begin
 for i in 0..100 loop   
  DBMS_OUTPUT.PUT_LINE(x);
  IF mod(i,10) = 7  THEN
    x := x +3;
  ELSE
    x:=x+1;
  END IF;
 end loop;
end;
0 голосов
/ 04 февраля 2019
set serveroutput on
declare 
i number(9);
y number(9);
x number(9) := 0;
z number(9) := 0;
begin
 for y in 0..8 loop
   for i in 0..7 loop   
    DBMS_OUTPUT.PUT_LINE(x);
    x := z+i+1;
   end loop;
   z := z + 10;
   x := z;
 end loop; 
end;
0 голосов
/ 04 февраля 2019

Как насчет такой WHILE петли?

SQL> set serveroutput on
SQL> declare
  2     i   number := 0;
  3  begin
  4     while i < 30
  5     loop
  6        dbms_output.put_line (i);
  7
  8        i := i + case when substr (to_char (i), -1) >= 7 then 3 else 1 end;
  9     end loop;
 10  end;
 11  /
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
21
22
23
24
25
26
27

PL/SQL procedure successfully completed.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...