oracle游标特点,oracle游标应用 sys_refcursor 和 cursor比较

本文对比了sys_refcursor和cursor在Oracle中的使用特点。sys_refcursor能够作为参数返回table格式的数据集,适用于存储过程及面向对象编程。而cursor主要用于存储过程内部数据处理。文章还介绍了sys_refcursor的具体应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sys_refcursor 和 cursor 优缺点比较

优点比较

优点一:sys_refcursor,可以在存储过程中作为参数返回一个table格式的结构集(我把他认为是table类型,容易理解,其实是一个游标集),

cursor 只能用在存储过程,函数,包等的实现体中,不能做参数使用。

优点二:sys_refcursor

这东西可以使用在包中做参数,进行数据库面向对象开放。哈哈。我喜欢。cursor 就不能。

缺点比较:

缺点:sys_refcursor 不能用open,close ,fetch

进行操作。不好学,难理解。

cursor 可以用 open,close ,fetch 操作,容易学,易懂

其他就目前不知道,至于游标的的基础概念,去google,百度一大堆的。这里就不累赘了。看例子:

建立一个存储过程

create or replace procedure up_test(o out sys_refcursor)

is

begin

open o for select * from

lq_test;

end;

返回的类型是sys_refcursor;

建立第二个存储过程

create or replace procedure up_getData(aMsg

out varchar2) is

type p_table_type is table of

lq_test%rowtype;

p_table p_table_type;

v sys_refcursor;

begin

up_test(v);

fetch v bulk collect into p_table;

for i in 1..p_table.count loop

dbms_output.put_line('字段1:'||p_table(i).v1 ||

' 字段2:' ||

p_table(i).v2);

end loop;

end;

这里要注意fetch 带参数的用法,bulk collect

,这是第集合的操作,必须先定义一个结合类。见上面的例子,还不懂就google了。用法就简单,没啥好介绍的。

取集合的值应该这样p_table(i).v1,其中i标识几行,带上字段,即可了。呵呵,容易理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值