2016 - 2024

感恩一路有你

打开游标 Oracle连着打开两次游标,只关闭一次有问题吗?

浏览量:2466 时间:2021-03-15 16:19:21 作者:admin

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在释放时不是正常关闭的,以便找到问题。

游标的使用方法?

打开游标 游标打开后不关闭 游标的使用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。