代码之家  ›  专栏  ›  技术社区  ›  4est

增加循环内数字的生成(SQL、Oracle)

  •  1
  • 4est  · 技术社区  · 7 年前

    我已经生成了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;
    

    我的下一轮应该产生数字: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 回复  |  直到 7 年前
        1
  •  1
  •   Ted at ORCL.Pro Marimuthu Palanisamy    7 年前
    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;
    
        2
  •  1
  •   Thorsten Kettner    7 年前

    看起来您想要输出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;
    
        3
  •  0
  •   Littlefoot    7 年前

    这样的一个怎么样 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>
    
        4
  •  0
  •   Derviş Kayımbaşıoğlu    7 年前

    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;