乙個簡單實用:
declare
-- 宣告游標
cursor mycur is
select * from emp;
empinfo emp%rowtype;
cou number;
begin
-- 游標操作使用迴圈,但是在操作之前必須先將游標開啟
for empinfo in mycur loop
cou := mycur%rowcount;
dbms_output.put_line('行號:' || cou || ' 雇員編號:' || empinfo.empno || ' 雇員姓名:' || empinfo.ename);
end loop;
end;
迴圈取出資料的兩種寫法:
declare
-- 宣告游標
cursor mycur is
select * from emp; -- list (emppo)
empinfo emp%rowtype;
cou number;
begin
-- 游標操作使用迴圈,但是在操作之前必須先將游標開啟
if mycur%isopen then
null;
else
open mycur;
end if;
-- 使游標向下一行
fetch mycur
into empinfo;
-- 判斷此行是否有資料被發現
while (mycur%found) loop
cou := mycur%rowcount;
dbms_output.put_line('行號:' || cou || ' 雇員編號:' || empinfo.empno || ' 雇員姓名:' || empinfo.ename);
-- 修改游標,繼續向下
fetch mycur
into empinfo;
end loop;
end;
第二種寫法:
declare
-- 宣告游標
cursor mycur is
select * from emp;
empinfo emp%rowtype;
cou number;
begin
-- 游標操作使用迴圈,但是在操作之前必須先將游標開啟
if mycur%isopen then
null;
else
open mycur;
end if;
loop
-- 使游標向下一行
fetch mycur
into empinfo;
exit when mycur%notfound;
cou := mycur%rowcount;
dbms_output.put_line('行號:' || cou || ' 雇員編號:' || empinfo.empno || ' 雇員姓名:' || empinfo.ename);
end loop;
end;
在儲存過程中使用游標
create or replace procedure myproc(oi_return out integer) is
cursor mycur is
select * from emp_0915;
empinfo emp_0915%rowtype;
cou number;
exc_return exception; -- 程式中間返回自定義異常
begin
if mycur%isopen then
null;
else
open mycur;
end if;
loop
fetch mycur
into empinfo;
exit when mycur%notfound;
cou := mycur%rowcount;
dbms_output.put_line(cou || '開始更新...');
update emp_0915 t set t.sal = t.sal + 1 where t.empno = empinfo.empno;
dbms_output.put_line(cou || '更新結束...');
end loop;
commit;
oi_return := 1;
exception
when exc_return then
rollback;
oi_return := 0;
end;
在oracle中測試:
declare
re integer;
begin
myproc(re);
if re = 1 then
dbms_output.put_line(re || ':執行結束。。。');
else
dbms_output.put_line(re || ':執行錯誤_______');
end if;
end;
oracle 游標使用
create or replace function errortyperead return varchar2 is result varchar2 3000 type cursor type is ref cursor tempname varchar2 100 cursor testcur i...
oracle游標使用
在進行pl sql程式設計時,我們都會使用游標,游標有兩種,一種是顯式游標,使用類似如下方式 open 游標 loop fetch into exit when notfound end loop close 游標 另一種是隱式游標,使用類似如下 for 游標變數 in 游標 loop 賦值變數 游...
Oracle游標使用
一,什麼是游標 遍歷查詢結果集的一種機制。二,為什麼避免使用游標 盡量避免使用游標,因為游標的效率較差 如果使用了游標,就要盡量避免在游標迴圈中再進行表連線的操作。三,使用游標的步驟 靜態游標 1,宣告一些變數,用來儲存游標遍歷過程的臨時資料 2,宣告游標,並且指定查詢 3,開啟游標 4,從游標中獲...