中易网

一定要定义一个 package 才能用ref cursor吗?

答案:2  悬赏:70  
解决时间 2021-02-28 19:14
下面一定要定义一个 package 才能用ref cursor吗?ref cursor怎么用? 首先,建立我们自己的包。并定义包中的一个自定义ref cursor
create or replace package mypackage as
type my_cursor is ref cursor;
end mypackage; 复制代码 在定义了ref cursor后,可以书写我们的程序代码
create or replace procedure xs_proc_list(shuxue in number,
p_cursor out mypackage.my_cursor) is
begin
open p_cursor for
select * from xuesheng where shu_xue > shuxue;
end xs_proc_list; 复制代码
最佳答案
问题1:一定要定义一个 package 才能用 ref cursor 吗?
答案:不是这样的。可以通过 declare 直接声明一个参照游标类型
例如:
declare --定义游标sp_emp_cursor type sp_emp_cursor is ref cursor; --定义一个游标变量 test_cursor sp_emp_cursor;问题2:ref cursor 怎么用?
定义好一个游标变量后,首先打开游标并指定所指向的数据对象,然后通过 fetch...into ..获取游标变量所指向的内容。
例如:
--定义变量 v_ename emp.ename%type; v_sal emp.sal%type; begin --执行 --把test_cursor和一个select结合 open test_cursor for select ename,sal from emp where deptno=&no; --循环取出 loop fetch test_cursor into v_ename,v_sal; --判断是否test_cursor为空 exit when test_cursor%notfound; dbms_output.put_line('名字:'||v_ename||' 工资:'||v_sal); end loop; end;希望对你有帮助!
全部回答
kage 名字 as type returncursor is ref cursor; procedure demo1(return_cursor out returncursor); end 名字; 体 create or replace package body 名字 as procedure demo1(return_cursor out returncursor) is strsql varchar2(8000); begin strsql :='select a,b from table1'; open return_cursor for strsql; end 名字;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
问道战绩低于1000了怎么办
为什么我不会游泳。
锐意梳毛厂地址有知道的么?有点事想过去
百泉浴池地址有知道的么?有点事想过去
意思为 一些小错误,累积起为一个大错误 的一
建一个1000吨土豆保鲜库要多少钱
我女朋友家人管的严!他说他累了!我该怎么办
深圳的舞蹈培训基地哪家好
不同牌子粉底液可以互相调和使用吗
日加华怎么读啊?
乙状结肠发现1*0.8短蒂息肉,会不会是癌
诸暨市公安局城中派出所浣纱小学警务室我想知
那时,书能接触到我的机会是很少的。(修改病
如果,机械终结者大军VS僵尸大军,谁会赢?请
保险公司月底冲刺的专题片
推荐资讯
丁丁有30元零用钱,他买书花了8元,妈妈又给
VB编程书
有没有讲解Direct2D编程的书
帮忙分析句子,为什么用"hard"He is studying
管理科学与工程和企业管理两个专业的研究生,
手机照相机被强行停止怎么办
为什么网恋己这么多骗子,男人谁玩闪爱谁死,
盘锦市田家镇富田小区对面的邮局具体地址是什
周公解梦梦到从腿里了挤出好多像蝉一样的东西
蒸年青无锡店怎么去啊,有知道地址的么
网上购物该上那个网啊 淘宝 天猫 京东 当当
如何正确理解“经济全球化在曲折中发展”这一
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?