- --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('20170301','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
- */
原文地址: http://blog.csdn.net/gdjlc/article/details/64125097