oracle筆記(6.3)

一、複習
1、  PL/SQL
Declare
   變量定義          變量定義:變量名 類型:=值;
begin
   程序              例:set serverout on;
                         dbms_output.put_line(‘ ’);
exception
end;  

 

(a) 條件結構
  if __ then        if __ then       case__  
end if;             elsif              when__ then
                  end if;             else__
                                    end;
(b) 循環控制
  while__ loop     for__ loop
….                ……
End loop;           end loop;

 

二、while for的用法
     declare
v_num int:=1;
v_sum int:=0;
                        begin
                               while v_num<=10 loop
v_sum:=v_sum+v_num;
v_num:=v_num+1;
                               end loop;
                        end;
               /

 

          
     declare
v_num int:=1;
v_sum int:=0;
                        begin
                               for v_num in 1..10 loop
v_sum:=v_sum+v_num ;
                               end loop;
                        end;
               /
三、遊標
1、 
cursor

定義遊標(cursor  
遊標指向結果集

 

 

 

2、  打開遊標 open

 

3、  使用遊標 fetch : 遊標向後移一行
%found :判斷遊標所指這一行有數據
   %not found : 判斷遊標所指這一行沒有數據
4、  關閉遊標 close

 

例:打印emp中所有記錄
1)使用while循環
declare
   cursor cur_emp is select * from emp;   (定義遊標)
   v_emp emp%rowtype;
begin
   if cur_emp%isopen then        (打開遊標)
      null;
   else
      open cur_emp;
   end if;
   fetch cur_emp into v_emp;     (遊標往下移一行) (使用遊標)③
   while cur_emp%found  loop  (判斷遊標所指這一行若有數據則進入while)
      dbms_output.put_line(v_emp.ename);   (打印)
      fetch cur_emp into v_emp;  (遊標往下移一行)
   end loop;
   if cur_emp%isopen then        (關閉遊標)
     close cur_emp;      
   end if;
end;
   /
(2)       使用for循環       for循環中使用遊標時自帶開、關和向下移一行,無需重新寫開、關和fetch語句
declare            
          cursor cur_emp is select * from emp;
          (v_emp emp%rowtype;)     ( 臨時變量可以不用定義)
begin
   for v_emp in cur_emp loop
      dbms_output.put_line(v_emp.ename);
   end loop;
end;
/
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章