请问 我遍历一个游标 向一个表中插入合适的数据
但是表中数据一直没变化
程序却一直在运行 一直都中断不了 等了很久也是
请问是什么原因导致的
我是显示打开游标 关闭游标
是oracle9i 

解决方案 »

  1.   

    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;
      

  2.   

    游标绝对有 exit rcursor%notfound ;不是这个原因
    数据量达到百万
    请问怎么解决
      

  3.   

    LZ说的太抽象了吧数据没有变化?是不是没有commit呢
    程序一直在运行,LZ可以打印log出来看看,到底是如何运行而没有退出
      

  4.   

    循环中有这样的语句么?
    没有的话会始终判断第一条记录的
        fetch cur into T_ERROR_CODE,T_ERROR_QTY; 
      

  5.   

    跟踪一下不就知道了吗,先加个commit测试一下就知道问题了;
    数量大的话用游标执行效率很低呢;
      

  6.   

    commit了 怎么会commit了
      

  7.   

    对了 上面说的问题 都不是 请问怎么解决程序始终运行的问题
    谢谢commit 和 exit when rcursor%notfound ;
    都不是
      

  8.   

    把它kill掉。程序代码贴出来看看吧
      

  9.   

    大数据量使用游标效率很低的;Insert数据以后没有Commit命令啊?如果没有全部执行结束应该是看不到表的数据变化的。