(转)Oracle中For和while及一些应用

本文深入探讨了Oracle中for和while循环的使用方法,包括基本语法、循环内部的退出条件以及实际应用案例。通过示例代码展示了如何使用这两种循环结构来解决特定问题,特别强调了exitwhen语句的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     Oracle中For和while及一些应用       

 
Oracle中的 forwhile 循环    有两种方式可以实现条件循环    一、 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.youkuaiyun.com/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.youkuaiyun.com/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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值