為了處理SQL語句
兩種游標
一
顯示游標被用於處理返回多行數據的SELECT 語句
在PL/SQL中處理顯示游標所必需的四個步驟
FETCH cursor_name INTO list_of_variables;
FETCH cursor_name INTO PL/SQL_record;
注意
select語句上 使用顯式游標
能明確訪問結果集
for循環游標
參數游標
解決多行記錄的查詢問題
fetch游標
二
所有的隱式游標都被假設為只返回一條記錄
使用隱式游標時
例如
……
SELECT studentNo
INTO curStudentNo
FROM StudentRecord
WHERE name=
上述游標自動打開
單條sql語句所產生的結果集合
用關鍵字SQL表示隱式游標
%found 影響到了記錄 true
%notfound 沒有影響到記錄 true
%isopen 是否打開 布爾值 永遠是false
多條sql語句 隱式游標SQL永遠指的是最後一條sql語句的結果
主要使用在update 和 delete語句上
實際操作和例子
(
declare
cursor cc is select empno
from emp where job =
ccrec cc%rowtype;
begin
for ccrec in cc loop
dbms_output
end loop;
end;
(
declare
cursor cc is select empno
from emp where job =
ccrec cc%rowtype;
begin
open cc;
loop
fetch cc into ccrec;
exit when cc%notfound;
dbms_output
end loop;
close cc;
end;
游標的屬性
%notfound fetch是否提到數據 沒有true 提到false
%found fetch是否提到數據 有true 沒提到false
%rowcount 已經取出的記錄的條數
%isopen 布爾值 游標是否打開
(
按部門編號的順序輸出部門經理的名字
declare
cursor c
cursor c
where deptno = no and job=pjob;
c
c
v_job varchar
begin
for c
for c
dbms_output
end loop;
end loop;
end;
(
declare
type cur is ref cursor;
type cur
cura cur;
c
c
begin
DBMS_output
open cura for select * from emp;
loop
fetch cura into c
exit when cura%notfound;
DBMS_output
end loop ;
DBMS_output
open cura for select * from dept;
loop
fetch cura into c
exit when cura%notfound;
DBMS_output
end loop;
close cura;
end;
From:http://tw.wingwit.com/Article/program/Oracle/201311/18404.html