问一下关于,游标的问题

cpp_1 2021-04-15 11:32:00

我用游标打开select * from aa where stata=0

这样能查到10000条记录,我游标,每次循环 100条

data

while (data)

xxxxxxxx
做一些业务逻辑

做完业务逻辑以后,我想删除这100条数据在执行下一个循环
cur.exec("delete aa where id in (100个ID号)")


但现在好像用,做的好,就一直在报cx_Oracle:Interface Error

是不是在一个,没走完的游标里面,我不能做删除?

如果这个时候,我重新开一个游标,执行删除,会对前面一个没走完的游标有什么影响吗?

比如

第一:个游标我执行读取10000条记录,每一个循环100条
第二:执行完业务逻辑,我新开一个游标,删除这100条记录
第三:开始第一个游标取下100条数据


...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰风漫天 2021-04-27
  • 打赏
  • 举报
回复
表大这样删除不靠谱,一般方案: 1、假删除,加个带索引删除标记 2、处理完了整表删除
cpp_1 2021-04-26
  • 打赏
  • 举报
回复
引用 3 楼 陈年椰子 的回复:
数据量这么大,那的确不合适都放到列表中, 建议按具体需求,比如按时间段, 按ID段, 分批查询,分批删除。 2千万条数据都要过一轮,然后删除?
对,一边往另外一个系统接口上传数据 发送成功的数据,需要再删除
Mr雪候鸟 2021-04-19
  • 打赏
  • 举报
回复
第一种:加个rownum,用rowmun每次卡100条,全部循环完再统一删; 第二种:加个rownum ,每100条存一个表,用完后删掉,依次循环;
陈年椰子 2021-04-17
  • 打赏
  • 举报
回复
数据量这么大,那的确不合适都放到列表中, 建议按具体需求,比如按时间段, 按ID段, 分批查询,分批删除。 2千万条数据都要过一轮,然后删除?
cpp_1 2021-04-16
  • 打赏
  • 举报
回复
我每一次查询的数据量会有2千万左右,应该放不到这么多在列表里面统一处理
陈年椰子 2021-04-16
  • 打赏
  • 举报
回复
如果内存够大, 就把数据存到一个列表中。 关闭游标, 然后你想删那个就删那个。

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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