游标中定义的查询执行多少次?

Posted

技术标签:

【中文标题】游标中定义的查询执行多少次?【英文标题】:How many times does a query defined in a cursor execute? 【发布时间】:2012-07-09 07:56:58 【问题描述】:

我在 Oracle 数据库中有一个存储过程。 在这个存储过程中,我定义了一个游标。

我使用以下方法遍历结果集:

FOR item IN cursor_name LOOP
END LOOP;

查询执行了多少次?有没有办法让我知道?这也是最好的方法,还是我应该以不同的方式迭代?

谢谢。

【问题讨论】:

看看这个“AskTom”asktom.oracle.com/pls/asktom/… 另请阅读:oracle.com/technetwork/issue-archive/2008/08-nov/… 【参考方案1】:

游标cursor_name中的查询只执行一次。您从该游标获取多少次取决于。每个 fetch 意味着一个上下文切换。从 Oracle 版本 10 开始,如果您将参数 PLSQL_OPTIMIZE_LEVEL 设置为其默认值 2 或更高,则会启动优化并且您一次将获取 100 行。如果没有这个,您将分别获取每一行。这会在获取大量行时大大损害性能。

还要注意不要将 SQL 语句放入循环中。当您这样做时,显然您将执行这些语句的次数与从游标中获取的行数一样多。

问候, 抢。

【讨论】:

以上是关于游标中定义的查询执行多少次?的主要内容,如果未能解决你的问题,请参考以下文章

PHP MongoDB 驱动程序的游标如何缓冲结果集?

游标的作用是啥?

如何使用Oracle的游标?

十九游标详解

一次使用存储过程游标遇到的坑

Oracle游标 CURSOR实例详解