- Oracle中的for和while循环
- 有两种方式可以实现条件循环
- 一、for 变量 in 开始数值...结束数值 loop end loop;
- 二、while 条件 loop end loop;
- loop的使用方式:
- exit when 语句可以出现在循环代码中的任何位置;
- for循环:
- begin
- for x in reverse 1..10 loop -- reverse大到小
- DBMS_OUTPUT.PUT_LINE('内:x='||x);
- end loop;
- DBMS_OUTPUT.PUT_LINE('endget');
- end;
- 如以下两个例:
- /*
- 功能描述:计算计算出1到100的和
- t的值为和
- */
- 1)
- Create Or Replace Procedure Count_Number Is
- i Number(10);
- t Number(10);
- Begin
- i := 1;
- t := 0;
- Loop
- i:=i+1;
- ---exit when i=100;
- exit when i>100;
- t:=t+i;
- Dbms_Output.Put_Line('it''s :' || t);
- end loop;
- ---Dbms_Output.Put_Line('it''s :' || t);
- End Count_Number;
- 2)
- Create Or Replace Procedure Count_Number Is
- i Number(10);
- t Number(10);
- Begin
- i := 1;
- t := 0;
- Loop
- i:=i+1;
- if i=100 then
- exit;
- end if ;
- t:=t+i;
- Dbms_Output.Put_Line('it''s :' || t);
- end loop;
- ---Dbms_Output.Put_Line('it''s :' || t);
- End Count_Number;
- 注:以上的结论都是一样的 !
- 以下是一个非常简单的过程,用来熟悉循环的!
- 1)使用while ....loop ....end loop ;
- Create Or Replace Procedure Count_Number Is
- i Number(10);
- t Number(10);
- Begin
- i := 1;
- t := 0;
- while i<=100 loop
- t:=t+i;
- i:=i+1;
- Dbms_Output.Put_Line('it''s :' || t);
- end loop;
- ---Dbms_Output.Put_Line('it''s :' || t);
- End Count_Number;
- 2)用for实现:for i in 1..l00 loop ....end loop ;
- Create Or Replace Procedure Count_Number Is
- i Number(10);
- t Number(10);
- Begin
- --- i := 1;
- t := 0;
- for i in 1..100 loop
- t:=t+i;
- Dbms_Output.Put_Line('it''s :' || t);
- end loop;
- ---Dbms_Output.Put_Line('it''s :' || t);
- End Count_Number;
- for循环:
- [PL/SQL] 用For Loop 替代Cursor
- http://www.itwenzhai.com/data/2006/0523/article_9377.htm
- http://blog.csdn.net/heyday/archive/2005/07/27/435804.aspx
- CURSOR FOR Loop
- FOR employee_rec in c1 ---employee_rec直接用,不用提前定义
- LOOP
- total_val := total_val + employee_rec.monthly_income;
- END LOOP;
- 当使用CURSOR FOR Loop时,不用我手工open cursor close cursor
- 应用:
- begin
- FOR emm IN ( SELECT ro_site, ns_site, product_line, wh_type
- FROM eis_hq_invhl_mail_data
- WHERE report_type = 'Detailed' )
- LOOP
- DBMS_OUTPUT.put_line( emm.product_line );
- eis_hq_invhl_pkg.make_mail_detailed_data
- ( p_ro_site => emm.ro_site,
- p_ns_site => emm.ns_site,
- p_product_line => emm.product_line,
- p_wh_type => emm.wh_type,
- p_current_day => to_date('2005-11-07','yyyy-MM-dd') );
- END LOOP;
- end;
- 存储过程DIY2----游标与循环
- http://blog.csdn.net/brave1/archive/2005/06/08/390160.aspx
- while循环:
- WHILE( i <= CEIL( LENGTH( p_clob_data ) / 4000 ))
- LOOP
- v_clob_data := TRIM( SUBSTR( p_clob_data,
- i * 4000,
- 4000 ));
- DBMS_OUTPUT.put_line( SUBSTR( v_clob_data,
- 0,
- 255 ));
- i := i + 1;