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

来源:互联网 发布:java成员变量是什么 编辑:程序博客网 时间:2024/06/15 08:56
--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 */

0 0