博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle的loop等循环语句的几个用法小例子[转]
阅读量:6509 次
发布时间:2019-06-24

本文共 1679 字,大约阅读时间需要 5 分钟。

[sql]
  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

你可能感兴趣的文章
国家互联网应急中心何世平博士主题演讲
查看>>
洗茶,你误会了多少年?
查看>>
贵阳高新区力争打造“千亿级大数据园区”
查看>>
安防众筹不止于卖产品 思维拓展刺激消费
查看>>
OpenSSH曝高危漏洞 会泄露私钥
查看>>
艾特网能获2016APCA用户满意品牌大奖
查看>>
《CCNP TSHOOT 300-135学习指南》——第2章 结构化故障检测与排除进程
查看>>
《Java EE 7精粹》—— 2.5 非阻塞I/O
查看>>
《Python数据科学实践指南》一2.2 字符串
查看>>
《R数据可视化手册》——1.1 安装包
查看>>
《iOS创意程序设计家》——导读
查看>>
spring-aop
查看>>
android RecycleView Adapter简单封装
查看>>
PgSQL · 案例分享 · 递归收敛优化
查看>>
Dart的数据库操作
查看>>
Codeforces 591 B Rebranding【Codeforces Round #327 (Div. 2)】
查看>>
命名难,难于上青天
查看>>
APUE读书笔记-05标准输入输出库(7)
查看>>
23 第一周作业
查看>>
DNS解析偶尔延迟
查看>>