天天看點

Oracle pl/sql基礎---循環

一、循環文法以及用法

1、loop的文法以及用法,如下

   loop

    ---處理程式

  end loop; 

例子:

 declare v_counter binary_integer:=1--定義變量

begin 

  loop

     dbms_output.put_line(v_counter);

 v_counter:=v_counter+1;

 if v_counter=30 then--如果變量大于30就跳出循環

   exit;

    end if;

  end loop;

end;

2、for- loop 的文法以及用法,文法如下:

For  變量 in 起始值..結束值  loop

  ---處理程式

end loop;

例子:

declare V_counter binary_integer:=1;

begin

for V_counter in 1..30 loop

    insert into tb_studentInfo values('名字'||V_counter,'年齡'||v_counter);

end loop;

commit;

end;

3、Goto 順序控制

 文法:

Goto label;

其中label是用雙箭頭括起來的标記,下面例子

declare

v_counter binary_integer:=1;

begin

  for v_counter in 1..21 loop

    insert into tb_studentinfo values(sys_guid(),'易**'||v_counter,v_counter,'男村'||v_counter||'組', '男');

    if v_counter=10 then

      goto Insert_Gril;

      exit;

      end if;

     end loop;  

   <<Insert_Gril>>---此處為标記

   for v_counter in 0..30 loop

      insert into tb_studentinfo values(sys_guid(),'某女士'||v_counter,v_counter,'女村'||v_counter||'組', '女');

     end loop;   

   commit;

end;

二、預定義異常

1、DUP_VAL_INDEX :違反唯一性

2、LOGIN_DENIED:登入失敗、使用者名和密碼錯誤;

3、NO_DATA_FOUND:沒有發現資料存在;

4、TOO_MANY_ROWS:資料行太多,即一個Select....Insert 語句比對的多個資料行;

5、ZERO_DIVIDE:除數為零;

6、VALUE_ERROR:算法或轉換錯誤;

7、CASE_NOT_FOUND:在case語句中沒有發現比對When項