使用存储过程返回结果集的问题

yangqm22 2011-01-05 05:21:28
我使用存储过程返回一个游标结果集,

在使用该游标时一定得FETCH v_cursor INTO 吗?
有没有其他的使用方式,例如可以把游标当成一个表 select * from v_cursor 这样的使用方式.

我的目的是因为该游标有多个字段。很多地方使用,并且每次使用的字段不同。

...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2011-01-06
  • 打赏
  • 举报
回复
返回的cursor已经执行过了open操作,
所以只能只用fetch into,不能使用for in loop
yangqm22 2011-01-06
  • 打赏
  • 举报
回复
看来也只能这样了。
cuishengmin 2011-01-05
  • 打赏
  • 举报
回复
可以定义一个表类型的变量、然后把存储过程改成function,让它的反回值设置成你要的结果集,当人结果集的数据类型需要跟你定义的表变量一致才行。
心中的彩虹 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 yangqm22 的回复:]
我使用存储过程返回一个游标结果集,

在使用该游标时一定得FETCH v_cursor INTO 吗?
有没有其他的使用方式,例如可以把游标当成一个表 select * from v_cursor 这样的使用方式.

我的目的是因为该游标有多个字段。很多地方使用,并且每次使用的字段不同。
[/Quote]

调用的时候 FETCH v_cursor INTO 表类型的记录变量就可以
tangren 2011-01-05
  • 打赏
  • 举报
回复
--for游标循环
DECLARE
CURSOR v_cur IS
SELECT col1, col2 FROM test;
BEGIN
FOR c IN v_cur LOOP
dbms_output.put_line(c.col1);
END LOOP;
END;
/
tangren 2011-01-05
  • 打赏
  • 举报
回复
如果使用游标,需要在循环中使用fetch into的,你可以取出来存放到变量里面。
当然不用fetch into可以使用游标for循环,和上面的类似,只不过是简化了语法。
for c in v_cur loop
dbms_output(c.col1);
end loop;

你如果需要象表一样使用,你可以建立一张临时表来处理。
mrying 2011-01-05
  • 打赏
  • 举报
回复
I don't know

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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