可能不关闭游标是行的!!!
你要1000条一COMMIT的目的是不是要做成一个事物?
这样的话可以自己做一个回滚段来实现一个大的事物!!!

解决方案 »

  1.   

    pl/sql中是可以的但如果你使用别的环境,有可能不一样的
    比如tuxedo的事务管理
      

  2.   

    oracle自己的产品(包括pl/sql、 developer2000、存储过程)是支持你的这种要求,我以前用过没有任何问题,但其他方式(包括用odbc连接的任何方式)就不支持这种情况。
      

  3.   

    to biti_rainy(biti_rainy),jin0607(dd) :我在pl/sql试过,游标也是在COMMIT之后被关闭了.
    TO ultrawang(yuanding) :1000条只是假如,实际上可能远远不止如果自己做一个回滚段假如第1020条出错,将回滚,这不合要求,要求是每做1000条就COMMIT.后面的回滚不影响已经COMMIT的数据了.另外,每执行1000条COMMIT一次也正是为了节省回滚段空间.
      

  4.   

    在PL/SQL中使用COMMIT不会关闭游标,你使用的是什么东东.
      

  5.   

    只有用db_link的游标在commit时才会自动关闭。这种情况下需要在生成动态游标时,依据分段条件每次取指定数量的记录进行分段,每个游标处理指定的数据量。处理完后,关闭游标,然后commit;啊,用;用习惯了。
      

  6.   

    to: robbinwoo(罗宾汉) .只有用db_link的游标在commit时才会自动关闭?也就是说还有别的种类的游标在COMMIT时不会被关闭?在ORACLE中有没有相关的属性设置?
    TO:ALL.今天18点结贴.
      

  7.   

    我只能告诉你

    pl/sql中 commit 是可以不关闭游标的
    但你有问题存在,那一定是有你的特殊的地方
    你又不说出来
    还谈什么谈?
      

  8.   

    方法1
    SQLCA.AutoCommit = True
    你的语句
    SQLCA.AutoCommit = false方法2
    用两个事务对象
      

  9.   

    declare 游标时增加with hold ,如:
    EXEC SQL declare Cu_Tb cursor with hold for Tb_id;试一下,在SCO +informix下用过,不知道oracle可不可行?
      

  10.   

    我用的是COBOL,要是用PB,我还是用数据窗口算了.