sql输出9*9乘法口诀表

--------------方法A-----------------

程序:
declare
    i int:=1;
    v varchar2(200):=NULL;
    v1 varchar2(20):=NULL;
begin
    loop
        for k in 1..i loop
            v1:=k||'*'||i||'='||k*i;
            v:=v||' '||v1;        
        end loop;
        dbms_output.put_line(v);
        v:=NULL;
    i:=i+1;
    exit when i>9;  
    end loop;
end;

运行结果如下:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
--------------方法B--------佩服该作者的技术---------
 select max(sys_connect_by_path(st, '  '))
      from (select i || '*' || j || '=' || i * j  st, i, j
         from (select rownum i from dual connect by rownum < 10) a,
             (select rownum j from dual connect by rownum < 10) b
         where i <= j)
      connect by j = prior j and i = prior i + 1
      start with i = 1
      group by j
      order by 1


MAX(SYS_CONNECT_BY_PATH(ST,''))
-----------------------------------------------------------------------------------

  1*1=1
  1*2=2  2*2=4
  1*3=3  2*3=6  3*3=9
  1*4=4  2*4=8  3*4=12  4*4=16
  1*5=5  2*5=10  3*5=15  4*5=20  5*5=25
  1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
  1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
  1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
  1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

已选择9行。

 

你可能感兴趣的:(Oracle)