通过REF CURSOR从得到的Table变量游标是否安全

sunsunlion 2004-03-29 11:19:38
我通过下面的代码从Table1中取出前10条记录,通过REF CURSOR输出到客户端的RecordSet中,测试通过。
但是我有个问题弄不太明白,代码中的rowSet是局部的表变量,输出的指向它的游标指针是在过程调用完毕后才使用的,过程调用结束了,这个过程中的局部变量对应的内存应该是无效了才对啊,为什么这个游标还能在客户端使用呢?
是否有潜在的问题啊?比如这个游标指向的实际是已经释放的内存,是不安全的

哪位大虾能帮忙解答一下,thx!

CREATE type TRow as object ( "ID" NUMBER(10,0),
"TEXT" VARCHAR2(20) );
CREATE type TRowSet as TABLE OF TRow;
declare
type TRefCursor is REF CURSOR;
procedure f( pCur in TRefCursor )
as
rowSet TRowSet := TRowSet();
rowItem TRow := TRow( NULL, NULL );
CURSOR curTable1 is SELECT * FROM TABLE1;
begin
open cruTable1;
for i in 1..10 loop
fetch curTable1 into rowItem.ID, rowItem.TEXT;
exit when curTable1%NOFOUND;
rowSet.Extend();
rowSet(i) := rowItem;
end loop;
open pCur for SELECT * FROM TABLE( CAST( rowSet as TRowSet ) );
end;
...全文
66 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sy246 2004-03-30
  • 打赏
  • 举报
回复
up

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧