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

时间:2012-07-09 07:56:58

标签: oracle stored-procedures plsql cursor

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

我使用:

遍历结果集
FOR item IN cursor_name LOOP
END LOOP;

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

感谢。

1 个答案:

答案 0 :(得分:5)

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

还要注意不要将SQL语句放在循环中。当你这样做时,显然会执行这些语句的次数与从光标中提取的行一样多。

的问候,
罗布。