游标如何工作,它与视图(SQL)有何不同?

时间:2014-08-20 14:35:33

标签: sql oracle cursor

我知道这是一个新手问题,但是游标让我感到困惑:

CREATE OR REPLACE FUNCTION f RETURN SYS_REFCURSOR
AS
  c SYS_REFCURSOR;
BEGIN
  OPEN c for select * from dual;
  RETURN c;
END;
/

我没有得到的代码的主要部分是:

OPEN c for select * from dual;

那里发生了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

简而言之,游标逐行评估数据,而任何其他SQL查询都会评估整个数据集。

不惜一切代价避免使用游标,因为它们的效率低于传统的SQL查询。光标不是在整个数据集上操作,而是在单个行上操作。相同的最终结果,当它是光标时速度要慢得多。

有些情况证明使用游标是合理的,但在100次中有99次,它们可以而且应该避免使用。