中易网

oracle中怎么代替游标

答案:3  悬赏:40  
解决时间 2021-04-09 06:17
在网上看了oracle存储过程优化的资料,都说尽量不要使用游标,我现在要优化一个存储过程,不使用游标的话那要用什么来代替游标呢,下面是我的存储过程中的游标:
cursor track_result is
select v.procinstid_,v.value_,r.purc_report_id,r.purc_pro_id,r.purc_pro_name,
t.team_name,r.purc_type,r.requi_form,r.build_name from cg_purchase_report r,
jbpm4_hist_var v,cg_bid_team t where r.bid_team=t.bid_team_id and
r.purc_report_id=v.value_ and v.varname_='pkId' and
v.procinstid_ like 'requirementsReport%' and r.purc_report_state=3;
begin
for tr in track_result loop
……
end loop;
end;

如上面代码 我要怎么改,效率会比以前好点,不使用游标的话,请高手们帮忙。。。
最佳答案
你说的资料上说的尽量不使用游标,那就是使用动态sql+execute immediate的方式了。这主要是程序设计上的问题,比如说一些表名或者字段名,可以使用变量来代替,这样写程序的时候麻烦点,但是方便日后维护。取数据用游标没什么错误,看你的存储过程,重要的是还是优化sql。或者可以使用bulk collect 批量的方式取数据。
全部回答
其实,数据量不是很大用游标也没事,主要是往往把数据存到一个集合,除了使用游标读取数据,没有很方便的办法,我也在为此优化问题犯愁,希望有高人指点
游标(cursor)是系统为用户开设的一个数据缓冲区,存放sql语句的执行结果。每个游标区都有一个名字,用户可以用sql语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
之前有社保卡中间停了几个月 该怎么办
2月23号亚冠联赛中央5台转播吗?
配电间与热表间能否上下设置
谁能告诉我材质好的隐形眼镜有哪些?近视了,
天正如何转成CADT3形式?
误差理论与数据处理课后习题答案(全章)合肥
大行P18 采用什么材料的车架,整车价格多少?
标准件厂起名字
员工外出学习受伤可否算工伤
月经期间可以喝冬虫夏草汤吗?
恒温杯怎么调温度
请问这单机游戏的名字(小时候在电子游戏室玩
福林堂康庄国药店我想知道这个在什么地方
我是女生,我男朋友让我主动亲他,我有点害羞
莱动4100柴油机早上不好起动是怎么回事 视频
推荐资讯
红绿灯的地方有测速的吗,城市
黄湾镇大临村百乐商店在什么地方啊,我要过去
钢铁厂各个部门询问
我用CPLD用VHDL语言做了一个信号源,频率不是
大学新生开学典礼,作为在校生代表发言
注意保持车距离标志一般是多少米?
美美时尚美容养生会所地址有知道的么?有点事
红四方土菜馆地址有知道的么?有点事想过去
鞍山市铁西区扬展成套电器经销处怎么去啊,有
肩胛骨连接了多少块肌肉
浙江南路/温州道(路口)在什么地方啊,我要过
肾病患者可否使用杜仲平压片
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?