Oracle中的for和while循環


Oracle中的for和while循環  
 
 
有兩種方式可以實現條件循環
 
一、for  變量  in  開始數值...結束數值 loop     end loop;
 
二、while 條件 loop       end  loop;
 
loop的使用方式:
 
一、X := 100;
 
  LOOP
 
    X := X + 10;
 
    IF X > 1000 THEN
 
      EXIT;
 
    END IF END LOOP;
 
    Y := X;
 
二、 X := 100;
 
    LOOP
 
      X := X + 10;
 
      EXIT WHEN X > 1000;
 
      X := X + 10;
 
    END LOOP;
 
    Y := X;
 
還有一個GOTO的使用,在后面的過程中會有的,用來產生錯誤日志。
 
以下是一個非常簡單的過程,用來熟悉循環的!
 
create or replace procedure count_number is
 
  /*
 
  功能描述:計算計算出1到100的和
 
  t的值為和
 
  */
 
  i number(10);
 
  t number(10);
 
begin
 
  /*
 
    i := 1;
 
    t := 0;
 
  --用while+loop實現
 
    /*begin
 
      while i <= 100 loop
 
        t := t + i;
 
        i := i + 1;
 
      end loop;
 
    end;
 
    */
 
  i := 1;
 
  t := 0;
 
  --用for實現
 
  begin
 
    for i in 1 .. 100 loop
 
      t := t + i;
 
    

    end loop;
 
  end;
 
end count_number;
 
for循環:
 
[PL/SQL] 用For Loop 替代Cursor
 

 
 
 
 
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----游標與循環
 
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;
 
    END LOOP; 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM