不是这样的,存储过程中不是非要用游标啊,他有输入和输出参数,只要在过程中做相应的处理就会返回输出参数。游标的作用主要是为了循环提取数据,游标分隐性游标和显性游标。举个例子(显性游标):CURSOR 游标名 IS SELECT 语句;.....WHILE 游标名% found LOOP .....END LOOP;其中的SELECT 语句提取的是一列值,然后每次取一个进行下面的循环。(隐性游标):for 游标名 in (SELECT 语句)loop ..........END LOOP;其中的SELECT 语句提取的也是一列值,然后每次取一个进行下面的循环。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);/*其他存储过程*/end;包体create or replace package body role_manage is--返回用户的好友列表procedure role_firends( nrole_id in number, nout_info out infocur)asbegin open nout_info for select b.id,b.role_name names from FRIEND_RELATION a,role_info b where a.role_id=nrole_id and a.FRIEND_ID=b.id order by a.DATETIME desc; end;/*其他存储过程*/end;在SqlServer2000中 存储过程可以直接返回结果集create proc aaasselect * from jobs反问你下 如果需要对上面查询得到的结果集中的每条记录单独进行操作呢?貌似在SqlServer2000里进行不了吧如何用了游标就可以了在Oracle中游标有隐式游标、显式游标、ref游标具体的用法就不举例了,你自己去看看书吧