以前学c++的,看oracle的while循环不太懂,好像没看到++1之类的语句,在plsql里面while要怎么写?
最好能给个简单的代码,能反映出while的用法的。

解决方案 »

  1.   

    for i in 1..100 loop
    代码
    exit when (条件)
    end loop
    这是for循环
      

  2.   

     /*begin
          while i <= 100 loop
            t := t + i;
            i := i + 1;
          end loop;
        end;
        */
      

  3.   

    loop  //开始循环 相当于while
    代码
    exit when (条件) //相当于if (条件){ break;}
    end loop //循环结束
      

  4.   


    我看过一些别人写的存储过程,while里面没有写类似 i := i + 1;的loop条件。还问了那个写代码的人,他说自己会循环,我想了好久还是不明白,好像很少看见存储过程里面有像你这样写法的。
      

  5.   


    --在oracle循环中,没迭代一次,i就会自动加1,不需要显示设置+1
    --下面是一个for循环,计算前20个fibonacci数:
    DECLARE  
           A NUMBER;  
           B NUMBER;  
           C NUMBER;  
        BEGIN  
           A:=0;  
           B:=1;  
           C:=1;  
           FOR i IN 1..20 LOOP  
             DBMS_OUTPUT.PUT_LINE('the '||i||' number is:'||C);  
             C:=A+B;  
             A:=B;  
             B:=C;  
           END LOOP;  
        END;  详细,请参考:

    oracle实现fibonacci数列
      

  6.   

      declare 
      n number:=0;
      begin
      while n<100 loop
      n:=n+1;
      dbms_output.put_line('n='||n);
      end loop;
      end;
       
      

  7.   

    跳出while  是 exit when 。。
      

  8.   

    --method one
    create or replace procedure proc_sum
    (
      v1 number,
      v2 number,
      tot out NUMBER
    )
    AS
    i NUMBER;
    BEGIN
    tot:=0;
    i:=v1;
    WHILE(i<=v2) LOOP
    tot:=tot+i;
    i:=i+1;
    END LOOP; 
    end;
    /
    --method two
    create or replace procedure proc_sum
    (
      v1 number,
      v2 number,
      tot out NUMBER
    )
    as
    BEGIN
    tot:=0;
    FOR i IN v1..v2 LOOP 
      tot:=tot+i;
    END LOOP;  
    end;
    /