oracle游标

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:20:53
sqlserver2000中有没有游标

在SqlServer2000中 存储过程可以直接返回结果集
create proc aa
as
select * from jobs

oracle存储过程怎么就必须得用游标才能返回呢 oracle为什么要加入游标啊
像SqlServer一样这样返回不是更好吗

我对数据库不了解 请大家不要见笑
请大哥们给解释一下

不是这样的,存储过程中不是非要用游标啊,他有输入和输出参数,只要在过程中做相应的处理就会返回输出参数。游标的作用主要是为了循环提取数据,游标分隐性游标和显性游标。
举个例子(显性游标):
CURSOR 游标名 IS SELECT 语句;
.....
WHILE 游标名% found LOOP
.....
END LOOP;
其中的SELECT 语句提取的是一列值,然后每次取一个进行下面的循环。
(隐性游标):
for 游标名 in (SELECT 语句)loop
.....

.....
END LOOP;
其中的SELECT 语句提取的也是一列值,然后每次取一个进行下面的循环。

在SqlServer2000中 存储过程可以直接返回结果集
create proc aa
as
select * from jobs
反问你下 如果需要对上面查询得到的结果集中的每条记录单独进行操作呢?
貌似在SqlServer2000里进行不了吧
如何用了游标就可以了
在Oracle中游标有隐式游标、显式游标、ref游标
具体的用法就不举例了,你自己去看看书吧

1、 oracle为什么要加入游标啊
游标即结果集,这样的返回,让应用跟数据库之间的沟通更简单。这样应用更容易扩展。

2、我给你个实例。存储过程返回游戏的话,必须要用到包,在包中先定义游标,然后返回。
包的作用,可以将相关类似的存储过程写到一个包里面,这样的更容易开发及维护。例子是一个返回用户好友列表的简单过程。

包头
create or replace package role_manage is
--申明游标变量
type infocur is ref cursor;

--返回用户的好友列表
procedure role_firends(
nrole_id in number,
nout_info out infocur