打开游标 Oracle连着打开两次游标,只关闭一次有问题吗?
Oracle连着打开两次游标,只关闭一次有问题吗?
您好,对于同一个游标,在第一次打开后,将打开一个缓存,将记录集读取到缓存中,然后取到下一个周期。
然后再次打开。此时,缓存将被清除,新记录集将再次读取到缓存中。循环完成后,释放游标close,即缓存第一次打开。所以可以将光标放在结束处。相反,它将节省大量的关闭时间。为了保险起见,可以这样写:如果cursor2%打开然后关闭cursor2结束如果程序的其他部分不确定,也可以按上述形式处理。
plsql中如果我定义一个游标,然后打开这个游标,然后loop循环把查询出来的数据全部插入自己定义的表中?
这不会浪费太多时间。所需时间分为两部分。
1. 定义游标以获取结果集。---这一时间主要取决于SQL查询需要多长时间。
2. 循环。----这是跑步时间。但是,建议不要使用游标来处理大量数据。游标处理速度很慢。效率相对较低。最好做批处理。我以前用光标处理数据。我的商业逻辑很复杂。我每小时只能处理几十万个数据。效率太低了。后来,我改为多步骤,使用insert into select。。它的书写速度快了一百八十倍。
ORA-01000:超出打开游标的最大数如何处理?
此错误的原因是resultset或语句未及时关闭。当您测试JMeter时,您不必打开它,因为Cursors降到了3,但是当资源正常关闭时,它仍然可以正常运行。
要解决这个问题,我们可以使用V$openuucursorview查看哪个SQL有问题,从而找到问题点。
SELECTSID,USERuname,SQLutextfromv$OPENucursor
执行上述语句以查看哪些会话打开了光标。
此外,由于ora-01000错误,主要是多循环处理中出现的问题。您可以使用以下SQL来查看已发布多次的SQL]SQL>SELECTOC.SID文件, 原用户姓名ST.SQL文本成本数字游标
2
FROMV$SQLST
3
INNERJOIN(
4
SELECTSID,USERuu NAME,ADDRESS,HASHu VALUE,COUNT(*)NUMu游标
5
FROMV$OPENuu游标
6
GROUPBYSID,USERu姓名,地址,哈希值
7
HAVINGCOUNT(*)>1
8
)OC
9ONOC.ADDRESS=ST。地址
10ANDOC.HASH值=圣哈希值
11ORDERBYOC.SID
If num_u2;游标的数量非常大,这表示SQL在释放时不是正常关闭的,以便找到问题。
游标的使用方法?
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。