Oracle中的游标

静态游标:与一个sql语句关联,编译块时候,语句已知
动态游标:运行时候与不同的sql关联

游标变量:
类似于pl/sql变量,可以在运行时接纳不同的值.
定义游标变量的完整语法:
1.具有返回类型的,称为有约束的游标或者强游标
type type_name is ref cursor return return_type;
2.没有返回类型的,称为无约束的游标或者弱游标
type type_name is ref cursor ;
3.返回值为记录类型
弱游标:
--------------------------------------------------------------------------------
declare
type ref_cur is ref cursor;
v_cur ref_cur;
ab varchar2(10);
vals varchar2(20);
begin
ab:='&input_choice';
if upper(ab)='A' then
open v_cur for select ename
from emp
where empno=7369;
fetch v_cur into vals;
dbms_output.put_line('姓名:'||vals);
close v_cur;
else
open v_cur for select dname
from dept
where deptno=10;
fetch v_cur into vals;
dbms_output.put_line('部门名称:'||vals);
close v_cur;
end if;
end;
/
--------------------------------------------------------------------------
强游标:用记录集
declare
type recordtype is record(
r_deptno number(2),
r_dname varchar2(14),
r_loc varchar2(13)
);
type rt_cur is ref cursor return dept%rowtype;
vrt_cur rt_cur;
value_rt recordtype ;
begin
open vrt_cur for select deptno,dname,loc
from dept;
loop
fetch vrt_cur into value_rt ;
exit when vrt_cur%notfound;
dbms_output.put_line('编号 '||value_rt.r_deptno||' 部门 '||value_rt.r_dname );
end loop;
close vrt_cur ;
end;
----------------------------------------------------------------------------
强游标:用表
declare
type rt_cur is ref cursor return dept%rowtype;
vrt_cur rt_cur;
value_rt dept%rowtype;
begin
open vrt_cur for select deptno,dname,loc
from dept;
loop
fetch vrt_cur into value_rt ;
exit when vrt_cur%notfound;
dbms_output.put_line('编号 '||value_rt.deptno||' 部门 '||value_rt.dname );
end loop;
close vrt_cur ;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值