oracle loop 次数,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('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

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值