加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 15:10:45 所属栏目:百科 来源:网络整理
导读:--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循环用法 (输
--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 
*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读