oracle的loop等循环语句的几个用法小例子 

--loop循环用法 (输出1到10)
declare v_num number(2) := 0;
begin
loop
v_num := v_num + 1;
exit when v_num > 10;
--上面退出循环也可以用下面3行
/* if(v_num > 9) then
exit;
end if;*/
dbms_output.put_line(v_num);
end loop;
end; --while loop循环用法 (输出1到10)
declare v_num number(2) := 0;
begin
while v_num < 10 loop
v_num := v_num + 1;
dbms_output.put_line(v_num);
end loop;
end; --for loop循环用法1 (输出1到10)
declare v_num number(2) := 99;
begin
for v_n in 1 .. v_num loop
exit when v_n > 10;
dbms_output.put_line(v_n);
end loop;
end; --for loop循环用法2 (输出某个表的序号、列数据)
begin
for v_n in(select amount,rownum from tmp) loop
dbms_output.put_line(v_n.rownum || ' , ' || v_n.amount);
end loop;
end; ---个循环打印某个月日历例子
declare v_days number(2);
v_firstday number(2);
v_result varchar2(4000);
v_d varchar(100);
v_month date;
begin
v_month := to_date('','yyyymmdd');
v_result := to_char(v_month,'yyyy') || '年' || to_char(v_month,'mm') || '月' || chr(10) || '日 一 二 三 四 五 六' || chr(10);
select to_char(last_day(v_month), 'dd') into v_days from dual;--当月多少天
select to_char(trunc(v_month, 'mm'),'d') into v_firstday from dual;--当月第1天是星期几:1-7
--1号所在星期几的之前每一天补3个空格
for v_week in 1 .. v_firstday - 1 loop
exit when v_firstday < 2;
v_result := v_result || ' ';
end loop;
for v_date in 1 .. v_days loop
v_d := v_date;
if(length(v_date) = 1) then
v_d := ' '||v_date ;
end if;
v_result := v_result || v_d || ' ';
if(mod(v_date + v_firstday, 7) = 1) then
v_result := v_result || ' ' || chr(10);
end if;
end loop;
dbms_output.put_line(v_result);
end;
/*
运行结果: 2017年03月
日 一 二 三 四 五 六
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
*/

oracle的双重for循环

    create or replace procedure test_procedure is
--a表游标定义
cursor a_cursor is
select substr(mc,0,2) as str ,mc as mcs from t_bz_zd_xzqh_jc;
--b表游标定义
cursor b_cursor(str1 string) is
SELECT bm FROM t_bz_zd_xzqh where mc like '%' || str1 || '%'; -- instr(mc, str1) > 0;
begin
for a_cur in a_cursor loop
for b_cur in b_cursor(a_cur.str) loop
--这里是你要执行的操作,比如insert到c
--insert into c values (b_cur.id);
update t_bz_zd_xzqh_jc set bh= b_cur.bm where mc = a_cur.mcs ;
commit;
end loop;
end loop; end;

最新文章

  1. js正则表达式的一些研究,截取两个字符串中间的字符串
  2. Android图片缓存之Bitmap详解
  3. liunx中计算机壳层
  4. linux系统下本地搭建git服务器
  5. Jersey(1.19.1) - JSON Support
  6. PhpStorm 注册码
  7. 智能卡安全机制比较系列(二)DS SmartCard
  8. UVa10651(记忆化搜索)
  9. 第03讲- 第一个Android项目
  10. 第2章 系统用户/组管理(2) su和sudo
  11. 小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容
  12. codeblocks设置背景主题
  13. Git添加文件改动时出错
  14. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!
  15. docker 快速部署ES集群 spark集群
  16. java.net.NoRouteToHostException
  17. [mobile]监听手机mobile上面软键盘的回车[enter]事件
  18. [BZOJ3123][Sdoi2013]森林 主席树+启发式合并
  19. 29张截图-全新安装CentOS7.5-超详细!
  20. 白帽子讲web安全——认证与会话管理

热门文章

  1. linux压缩相关
  2. python3使用csv包,读写csv文件
  3. yarn资源memory与core计算配置
  4. 基础业务:滚动到指定位置导航固定(CSS实现)
  5. 再学HTML之一
  6. IHttpModule理解-知识补充
  7. Internet History, Technology and Security (Week5.2)
  8. java synchronized关键字浅析
  9. 第十周(11.18-11.24)----个人项目----学习java总结2
  10. paperOne基于java web的简易四则运算出题网站