隱式游標
四個常用的屬性
sql%found
sql%notfound
sql%isopen
sql%rowcount
declare
dept_no_number(4) :=50;
begin
delete from dept_temp where deptno=dept_no;
if sql%found then
insert into dept_temp values(50,』database』,』beijing』);
end if;
commit;
end;
/顯示游標
通常使用在plsql中,有我們顯示的控制open,fetch,close,有下面4個最常用的屬性
cursorname%found
cursorname%notfound
cursorname%isopen
cursorname%rowcount
declare
cursor c1 is select ename,sal from emp where rownum<11;
my_ename emp.ename%type;
my_salary emp.sal%typ;
begin
open c1;
loop
fetch c1 into my_ename,my_salary;
if c1%found then
dbms_output.put_line(『name=』||my_ename||』,salary=』||my_salary);
else
exit;
end if;
end loop;
close c1;
end;
/ 標準游標的使用方法
create or replace procedure p_demo_explicit_cursor_std is
cursor c1 is select * from emp where rownum<11;
emp_rec emp%rowtype;
begin
open c1;
fetch c1 into emp_rec;
while(c1%found) loop
dbms_output.put_line(『name=』||emp_rec.ename||』,salary=』||emp_rec.sal);
fetch c1 into emp_rec;
end loop;
close c1;
exception
when others then
…. rollback;
return;
end p_demo_explicti_curosor_std;
參考游標,參考游標與顯示游標很像也是在儲存過程中使用,常用的屬性有下面四個
與顯示游標的是一樣的。
主要有下面三個特性:
1定義方式靈活
2可以不與某個固定的sql繫結,可以隨時open,並且每次open所對應的sql語句都可以是不一樣的。
3可以作為儲存過程的輸入輸出
引用游標範例:
create package pck_refcursor_open_demo as
type gencurtyp is ref cursor;
procedure open_cv(generic_cv in out gencurtyp,choice int);
end pck_refcursor_open_demo;
/create package body pck_refcursor_oepn_demo as
procedure open_cv(generic_cv in out gencurtyp,choice int) is
begin
if choice=1 then
open generic_cv for select * from emp;
elsif choice=2 then
open generic_cv for select * from dept;
end if;
end;
end pck_refcursor_open_demo;
/引用游標中的批量取值
下面是一行一行取
declare
type empcurtyp is ref cursor return emp%rowtype;
emp_cv empcurtyp;
emp_rec emp%rowtype;
begin
open emp_cv for select * from emp where rownum<11;
loop
fetch emp_cv into emp_rec;
exit when emp_cv%notfound;
dbms_output.put_line(『name=』||emp_rec.ename);
end loop;
close emp_cv;
end;
/下面是批量取值
declare
type empcurtyp is ref cursor;
type namelist is table of emp.ename%type;
emp_cv empcurtyp;
names namelist;
begin
open emp_cv for select ename from emp where rownum<11;
fetch emp_cv bulk collect into names;
close emp_cv;
for i in names.first .. names.last
loop
dbms_output.put_line(『name=』||names(i));
end loop;
end;
/
Oracle 游標 引用游標
sql set severoutput on sp2 0735 unknown set option beginning severoutpu.sql set serveroutput on sql remark 引用游標 sql remark sql remark sql remark 引用游標 ...
使用游標 引數游標
參游標是指帶有引數的游標。在定義了引數游標之後,當使用不同引數值多次開啟游標時,可以生成不同的結果集。定義引數游標的語法如下 cursor cursor name parameter name datetype is select statement 注意,當定義引數游標時,游標引數只能指定資料型別...
使用游標 游標FOR迴圈
游標for迴圈是在pl sql塊中使用游標最簡單的方式,它簡化了對游標的處理。當使用游標for迴圈時,oracle會隱含的開啟游標,提取游標資料並關閉游標。例子 顯示emp表所有雇員名及其工資 declare cursor emp cursor isselect ename,sal from emp...