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;