• oracle的loop等循环语句的几个用法小例子[转]


    1. --loop循环用法 (输出1到10)  
    2. declare v_num number(2) := 0;  
    3. begin   
    4.   loop  
    5.     v_num := v_num + 1;  
    6.     exit when v_num > 10;  
    7.     --上面退出循环也可以用下面3行  
    8.      /* if(v_num > 9) then  
    9.         exit;  
    10.      end if;*/  
    11.     dbms_output.put_line(v_num);   
    12.   end loop;    
    13. end;  
    14.   
    15. --while loop循环用法 (输出1到10)  
    16. declare v_num number(2) := 0;  
    17. begin   
    18.   while v_num < 10 loop  
    19.      v_num := v_num + 1;  
    20.      dbms_output.put_line(v_num);  
    21.   end loop;    
    22. end;  
    23.   
    24. --for loop循环用法1 (输出1到10)  
    25. declare v_num number(2) := 99;  
    26. begin  
    27.   for v_n in 1 .. v_num loop      
    28.      exit when v_n > 10;  
    29.      dbms_output.put_line(v_n);  
    30.   end loop;  
    31. end;  
    32.   
    33. --for loop循环用法2 (输出某个表的序号、列数据)  
    34. begin  
    35.    for v_n in(select amount,rownum from tmp) loop   
    36.       dbms_output.put_line(v_n.rownum || ' , ' || v_n.amount);  
    37.    end loop;  
    38. end;  
    39.   
    40.   
    41. ---个循环打印某个月日历例子  
    42. declare v_days number(2);   
    43.         v_firstday number(2);  
    44.         v_result varchar2(4000);  
    45.         v_d varchar(100);  
    46.         v_month date;  
    47. begin  
    48.    v_month := to_date('20170301','yyyymmdd');  
    49.    v_result := to_char(v_month,'yyyy') || '年' || to_char(v_month,'mm') || '月' || chr(10) ||  '日 一 二 三 四 五 六' || chr(10);  
    50.    select to_char(last_day(v_month), 'dd') into v_days from dual;--当月多少天  
    51.    select to_char(trunc(v_month, 'mm'),'d') into v_firstday from dual;--当月第1天是星期几:1-7      
    52.    --1号所在星期几的之前每一天补3个空格  
    53.    for v_week in 1 .. v_firstday - 1  loop  
    54.       exit when v_firstday < 2;  
    55.       v_result := v_result || '   ';        
    56.    end loop;  
    57.    for v_date in 1 .. v_days loop  
    58.       v_d := v_date;  
    59.       if(length(v_date) = 1) then  
    60.          v_d :=  ' '||v_date ;                  
    61.       end if;  
    62.       v_result := v_result || v_d || ' ';       
    63.       if(mod(v_date + v_firstday, 7) = 1) then  
    64.           v_result := v_result || ' ' || chr(10);         
    65.       end if;  
    66.    end loop;    
    67.    dbms_output.put_line(v_result);  
    68. end;  
    69. /*  
    70. 运行结果:  
    71.   
    72. 2017年03月  
    73. 日 一 二 三 四 五 六  
    74.           1  2  3  4    
    75.  5  6  7  8  9 10 11    
    76. 12 13 14 15 16 17 18    
    77. 19 20 21 22 23 24 25    
    78. 26 27 28 29 30 31   
    79. */ 

    原文地址: http://blog.csdn.net/gdjlc/article/details/64125097

  • 相关阅读:
    P3746 [六省联考2017]组合数问题 矩阵乘法
    P3322 [SDOI2015]排序 暴搜
    P2877 [USACO07JAN]Cow School G 斜率优化+分数规划
    P3283 [SCOI2013]火柴棍数字 DP
    AT2005 [AGC003E] Sequential operations on Sequence 单调栈+二分+差分
    CF568C New Language 2-SAT
    P4410 [HNOI2009]无归岛 仙人掌图
    CF505D Mr. Kitayuta's Technology 并查集 拓扑排序
    Algorithms: Design and Analysis, Part 1
    双目测距项目
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/7306317.html
Copyright © 2020-2023  润新知