我在Delphi/Oracle应用程序中收到以下错误消息"ora-01000 -超过最大打开游标数“。代码如下:
begin
for i := 0 to 150 do
begin
with myADOQuery do
begin
SQL.Text := 'DELETE FROM SOMETABLE';
ExecSQL; -- from looking at V$OPEN_CURSOR a new cursor is added on each iteration for the session
Close; -- thought this would close the cursor but doesn't
end;
end;
end;我知道我可以通过简单地增加OPEN_CURSORS参数的数量来解决这个问题,但是,我更愿意找到一个在查询执行后关闭游标的解决方案。有什么想法吗?
Delphi 2006 BDS Oracle 10g
发布于 2011-01-06 22:49:21
发布于 2011-01-06 22:15:35
检查this link。我不是Oracle用户,但似乎有一些游标缓存,正如他们所说的:“调优OPEN_CURSORS的最佳建议是不要调优它。将它设置得足够高,这样您就不必担心它了。”所以我要说的是,即使Close命令关闭了游标,它仍然保留在缓存中。还有一些小贴士,告诉你如何检查你的当前状况。
发布于 2011-01-07 00:52:28
请尝试使用TADOCommand组件。
TADOCommand最常用于执行数据定义语言(DDL)命令或执行不返回结果集的存储过程。
或者直接使用TADOConnection.Execute函数
https://stackoverflow.com/questions/4615440
复制相似问题