从概念到示例—Oracle引用(REF)游标
2011-09-05 13:18
309 查看
从概念到示例—Oracle引用(REF)游标
Ref游标 又称 "动态游标"(1)、在运行时使不同的语句与之关联
(2)、Ref游标可以使用游标变量
.游标变量
a. 一种引用类型
b. 可以再运行时指向不同的存储位置
c. Close语句关闭游标并释放用于查询的资源
.游标变量的类型
a.具有约束的游标变量
- 也就是具有返回类型的游标变量 也称为”强游标"
b.无约束的游标变量
- 也就是没有返回类型的游标变量 也称为 “弱游标”
示例1: 弱型游标示例
声明时不需指定查询语句,即不指向任何区域
declare
type RefEmpCur is ref cursor; --声明引用游标类型 游标返回的类型没有限制
EmpCur RefEmpCur; --游标变量
EmpRow emp%rowtype; --存储游标查询到得结果
flag int:=0;
begin
flag :=&flag;
if flag=0 then
open EmpCur for select * from emp where sal>500 and sal<2000;
elsif flag=1 then
open EmpCur for select * from emp where sal>=2000;
elsif flag=2 then
open EmpCur for select * from dept; --弱类型游标对目标表没有限制,数据可以使来自任何表
else
open EmpCur for select * from emp;
end if;
/* for循环不能用于Ref游标,因为它是自动打开游标
for EmpRow in EmpCur loop
DBMS_output.put_line('empno='||EmpRow.empno);
end loop;
*/
loop
exit when EmpCur%notfound; --如果没有查询到数据就退出
fetch EmpCur into EmpRow;
DBMS_output.put_line('empno='||EmpRow.empno);
end loop;
close EmpCur;
end;
/
示例1: 强型游标示例
declare
type RefEmpCur is ref cursor return emp%rowtype; --游标仅能打开emp表的数据
EmpCur RefEmpCur; --游标变量
EmpRow emp%rowtype; --存储游标查询到得结果
flag int:=0;
begin
flag :=&flag;
if flag=0 then
open EmpCur for select * from emp where sal>500 and sal<2000;
elsif flag=1 then
open EmpCur for select * from emp where sal>=2000;
else
open EmpCur for select * from emp;
end if;
loop
exit when EmpCur%notfound; --如果没有查询到数据就退出
fetch EmpCur into EmpRow;
DBMS_output.put_line('empno='||EmpRow.empno);
end loop;
close EmpCur;
end;
/
限制
1.不能在程序包中声明游标变量
2.远程子程序不能接受游标变量的值
3.不能使用比较操作符对游标变量进行相等或不相等测试
4.不能将空值赋予游标变量
5.表不能存储游标变量的值
相关文章推荐
- 从概念到示例—Oracle引用(REF)游标
- 从概念到示例—Oracle隐式游标
- 从概念到示例—Oracle隐式游标
- 从概念到示例—Oracle显式游标
- 从概念到示例—Oracle显式游标
- 从概念到示例—Oracle隐式游标
- Oracle 游标示例,带异常处理
- oracle 游标变量ref cursor详解
- 从概念到示例—Oracle创建程序包
- oracle中游标的使用,示例
- ORACLE游标、递归查询、子查询与批量更新示例
- Oracle REF动态游标使用
- oracle中带游标的存储过程示例
- oracle 隐式 游标 显示 循环 动态 select 语句 游标 异常 处理 自定义 游标的概念
- ORACLE游标概念讲解
- Oracle PLSQL Demo - 15.强类型REF游标[预先指定查询类型与返回类型]
- Oracle_游标示例
- Oracle动态sql返回游标(sys_refcursor)
- 从概念到示例—Oracle中操作存储过程
- Oracle PLSQL Demo - 16.弱类型REF游标[没有指定查询类型,已指定返回类型]