1. for in loop形式sql
DECLARE
CURSOR c_sal IS SELECT employee_id, first_name || last_name ename, salary
FROM employees ;
BEGIN
--隱含打開遊標
FOR v_sal IN c_sal LOOP
--隱含執行一個FETCH語句
DBMS_OUTPUT.PUT_LINE(to_char(v_sal.employee_id)||'---'|| v_sal.ename||'---'||to_char(v_sal.salary)) ;
--隱含監測c_sal%NOTFOUND
END LOOP;
--隱含關閉遊標
END;數組
2.普通的遊標循環服務器
declare
--定義遊標而且賦值(is 不能和cursor分開使用)
cursor
stus_cur
is
select
*
from
students;
--定義rowtype
cur_stu students%rowtype;
/*開始執行*/
begin
--開啓遊標
open
stus_cur;
--loop循環
loop
--循環條件
exit
when
stus_cur%notfound;
--遊標值賦值到rowtype
fetch
stus_cur
into
cur_stu;
--輸出
dbms_output.put_line(cur_stu.
name
);
--結束循環
end
loop;
--關閉遊標
close
stus_cur;
/*結束執行*/
end
;
declare
cursor
myemp_cur
is
select
*
from
myemp;
type myemp_tab
is
table
of
myemp%rowtype;
myemp_rd myemp_tab;
begin
open
myemp_cur;
loop
fetch
myemp_cur bulk collect
into
myemp_rd limit 20;
for
i
in
1..myemp_rd.
count
loop
dbms_output.put_line(
'姓名:'
||myemp_rd(i).ename);
end
loop;
exit
when
myemp_cur%notfound;
end
loop;
end
;