--3.將游標的當前行取出存放到變數中
fetch cur_stu into v_stuno,v_stuname;
loop
if cur_stu%found then --如果游標cur_stu所指還有資料行
--列印結果
dbms_output.put_line(v_stuno||'->'||v_stuname);
--繼續將游標所指的當前行取出放到變數中
fetch cur_stu into v_stuno,v_stuname;
else
exit;
end if;
end loop;
close cur_stu; --4.關閉游標
end;
end proc_stu2;
(3).使用for迴圈處理游標
create or replace procedure proc_stu3 as
begin
--顯示游標使用,使用for迴圈
declare
--定義游標,名稱為cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
begin
for stu in cur_stu
loop
dbms_output.put_line(stu.stuno||'->'||stu.stuname);
--迴圈做隱含檢查 %notfound
end loop;
--自動關閉游標
end;
end proc_stu3;
(4).常用的使用exit when處理游標
create or replace
procedure proc_stu1_1 as
begin
--顯示游標使用,使用exit when迴圈
declare
--1.定義游標,名稱為cur_stu
cursor cur_stu is
select stuno,stuname from student order by stuno;
--定義變數,存放游標取出的資料
v_stuno varchar(4);
v_stuname varchar(20);
begin
--2.開啟游標cur_stu
open cur_stu;
loop
--3.將游標的當前行取出存放到變數中
fetch cur_stu into v_stuno,v_stuname;
exit when cur_stu%notfound; --游標所指還有資料行,則繼續迴圈
--列印結果
dbms_output.put_line(v_stuno||'->'||v_stuname);
end loop;
close cur_stu; --4.關閉游標
end;
end proc_stu1_1;
二.隱式游標
1.使用演示
create or replace procedure proc_stu4 as
begin
--隱式游標使用
update student set stuname='張燕廣' where stuno='1104';
--如果更新沒有匹配則插入一條新記錄
if sql%notfound then
insert into student(stuno,stuname,age,gender)
values('1104','張燕廣',18,'男');
end if;
end proc_stu4;
2.說明
所有的sql語句在上下文區內部都是可執行的,因為都有乙個游標指向上下文區,此游標就是
sql游標,與現實游標不同的是,sql游標在pl/sql中不需要開啟和關閉,而是在執行update、
delete是自動開啟和關閉。
上面例子中就是通過sql%notfound游標屬性判斷update語句的執行結果決定是否需要插入新記錄。
Oracle 游標使用大全2
游標for迴圈 在大多數時候我們在設計程式的時候都遵循下面的步驟 1 開啟游標 2 開始迴圈 3 從游標中取值 4 檢查那一行被返回 5 處理 6 關閉迴圈 7 關閉游標 可以簡單的把這一類 稱為游標用於迴圈。但還有一種迴圈與這種型別不相同,這就是for迴圈,用於for迴圈的游標按照正常的宣告方式宣...
Oracle 游標使用大全2
游標for迴圈 在大多數時候我們在設計程式的時候都遵循下面的步驟 1 開啟游標 2 開始迴圈 3 從游標中取值 4 檢查那一行被返回 5 處理 6 關閉迴圈 7 關閉游標 可以簡單的把這一類 稱為游標用於迴圈。但還有一種迴圈與這種型別不相同,這就是for迴圈,用於for迴圈的游標按照正常的宣告方式宣...
Oracle 游標使用大全2
游標for迴圈 在大多數時候我們在設計程式的時候都遵循下面的步驟 1 開啟游標 2 開始迴圈 3 從游標中取值 4 檢查那一行被返回 5 處理 6 關閉迴圈 7 關閉游標 可以簡單的把這一類 稱為游標用於迴圈。但還有一種迴圈與這種型別不相同,這就是for迴圈,用於for迴圈的游標按照正常的宣告方式宣...