游标问题

merrill 2009-06-18 03:50:33
请问 我遍历一个游标 向一个表中插入合适的数据
但是表中数据一直没变化
程序却一直在运行 一直都中断不了 等了很久也是
请问是什么原因导致的
我是显示打开游标 关闭游标
是oracle9i
...全文
33 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
singsongs 2009-06-19
  • 打赏
  • 举报
回复
可以粘主要代码上来看看
tianyazlf 2009-06-18
  • 打赏
  • 举报
回复
大数据量使用游标效率很低的;Insert数据以后没有Commit命令啊?如果没有全部执行结束应该是看不到表的数据变化的。
billhost 2009-06-18
  • 打赏
  • 举报
回复
把它kill掉。

程序代码贴出来看看吧
merrill 2009-06-18
  • 打赏
  • 举报
回复
对了 上面说的问题 都不是 请问怎么解决程序始终运行的问题
谢谢

commit 和 exit when rcursor%notfound ;
都不是
merrill 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lwh_1024 的回复:]
LZ说的太抽象了吧

数据没有变化?是不是没有commit呢
程序一直在运行,LZ可以打印log出来看看,到底是如何运行而没有退出
[/Quote]
commit了 怎么会commit了
merrill 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 merrill 的回复:]
谢谢呀 执行时间很长 但是我等了近一天 数据量没变化 但是程序还是终止不了
请问呀
[/Quote]

当然 commit了
xuqunying0545 2009-06-18
  • 打赏
  • 举报
回复
跟踪一下不就知道了吗,先加个commit测试一下就知道问题了;
数量大的话用游标执行效率很低呢;
bw555 2009-06-18
  • 打赏
  • 举报
回复
循环中有这样的语句么?
没有的话会始终判断第一条记录的
fetch cur into T_ERROR_CODE,T_ERROR_QTY; 

[Quote=引用 4 楼 merrill 的回复:]
游标绝对有 exit rcursor%notfound ;不是这个原因
数据量达到百万
请问怎么解决
[/Quote]
lwh_1024 2009-06-18
  • 打赏
  • 举报
回复
LZ说的太抽象了吧

数据没有变化?是不是没有commit呢
程序一直在运行,LZ可以打印log出来看看,到底是如何运行而没有退出
merrill 2009-06-18
  • 打赏
  • 举报
回复
谢谢呀 执行时间很长 但是我等了近一天 数据量没变化 但是程序还是终止不了
请问呀
merrill 2009-06-18
  • 打赏
  • 举报
回复
游标绝对有 exit rcursor%notfound ;不是这个原因
数据量达到百万
请问怎么解决
xuqunying0545 2009-06-18
  • 打赏
  • 举报
回复
create or replace procedure P_REPORT_LCD_LINE_TOTALERROR
(
T_MONTH VARCHAR2
)
AS
type refCur is ref cursor;--定义动态游标类型
cur refCur ; --声明动态游标
T_STATIME DATE;
sqlstr varchar2(1000);
BEGIN
open cur for 'select duty_type,count(duty_type) errorqty
from
(
select
substr(duty_type,1,1)duty_type
from t_re_repair
where trunc(test_time)>='||chr(39)||T_MONTHS_DAY||chr(39)||
'and trunc(test_time)<='||chr(39)||T_MONTHE_DAY||chr(39)||
'and duty_type is not null
)
where duty_type='||chr(39)||'A'||chr(39)|| ' or duty_type=' ||chr(39)||'B'||chr(39)||' or duty_type='||chr(39)||'C'||chr(39)||' or duty_type='||chr(39)||'D'||chr(39)||' or duty_type='||chr(39)||'E'||chr(39) ||
' group by duty_type' ;
loop
fetch cur into T_ERROR_CODE,T_ERROR_QTY;
exit when cur %notfound;
insert into EQHAdmin.T_LCD_LINE_TOTALERRORANALY(SEQUENCE_NUMBER,ERROR_PROJECT,ERROR_CODE,ERROR_QTY,ERROR_RATE,YEARMONTH,STATIME)
values(I,T_ERROR_PROJECT,T_ERROR_CODE,T_ERROR_QTY,T_ERROR_RATE||'%',T_MONTH,sysdate);
end loop;
close cur;
end;
bw555 2009-06-18
  • 打赏
  • 举报
回复
查查你游标的退出条件,
是不是死循环了,
是不是没写取下一条记录的语句
merrill 2009-06-18
  • 打赏
  • 举报
回复
在线等 各位请说下看发 如果办法好 本人可以在追加分数

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧