一、複習
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;
if cur_emp%isopen then (打開遊標)②
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;
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;
/