最简单的游标写法
时间:2011-09-12
来源:互联网
--1.没有动态语句
begin
for rec in (select caption from okform)
loop
dbms_output.put_line(rec.caption);
end loop;
end;
--2. 动态游标写法
declare
rec sys_refcursor;
v_caption varchar2(200);
begin
open rec for ' select caption from okform' ;
loop
FETCH rec INTO v_caption;
EXIT WHEN rec%NOTFOUND;
dbms_output.put_line(v_caption);
end loop;
close rec;
end;
对于动态游标,我觉得写法还不够简单,不知道是有更简洁的写法;
另外有个疑惑,对于后者, close rec 不写有没有问题,我觉得当pl/sql结束后,生命周期也就完了,无所谓要关闭游标;
比如执行下面这段话,夸张一点,1秒执行10次,24小时不断;
declare
rec sys_refcursor;
v_caption varchar2(200);
begin
open rec for select caption from okform ;
--没有关闭游标
end;
一段时间后,数据库会不会崩溃;
begin
for rec in (select caption from okform)
loop
dbms_output.put_line(rec.caption);
end loop;
end;
--2. 动态游标写法
declare
rec sys_refcursor;
v_caption varchar2(200);
begin
open rec for ' select caption from okform' ;
loop
FETCH rec INTO v_caption;
EXIT WHEN rec%NOTFOUND;
dbms_output.put_line(v_caption);
end loop;
close rec;
end;
对于动态游标,我觉得写法还不够简单,不知道是有更简洁的写法;
另外有个疑惑,对于后者, close rec 不写有没有问题,我觉得当pl/sql结束后,生命周期也就完了,无所谓要关闭游标;
比如执行下面这段话,夸张一点,1秒执行10次,24小时不断;
declare
rec sys_refcursor;
v_caption varchar2(200);
begin
open rec for select caption from okform ;
--没有关闭游标
end;
一段时间后,数据库会不会崩溃;
作者: qingyun 发布时间: 2011-09-12
我在不关闭游标的情况下运行多次,结果select count(*) from v$open_cursor没有什么变化,可见PLSQL对REFCURSOR进行回收了。
作者: newkid 发布时间: 2011-09-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28