为什么在 PL/SQl ORACLE 中使用游标?
Why using cursors in PL/SQl ORACLE?
我是 PL/SQL 的初学者,在学习课程期间我看到了 CURSOR
我想知道我们为什么要使用它,什么时候使用?
非常感谢
当您执行 SELECT 并且 returns 多行时,您无法将这些行保存在 变量中,因此您必须使用 CURSOR。如果您熟悉编程,那么 CURSOR 类似于 Array。
因此,如果您执行 SELECT 并将结果保存在代码中的变量中:
SELECT id INTO v_id FROM table;
并且如果返回多行,则无法将这些行保存在变量 v_id 中,并且 TOO_MANY_ROWS 将抛出异常。
参考:http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23plsql-1906474.html
此外,如果您看过 Oracle 的 FOR ... IN (SELECT ...) ... LOOP ... END LOOP 语句,那就是使用隐式游标。
使用显式游标方法的原因是您可以使用游标做更多的事情,例如BULK COLLECT,它可以在许多但不是所有情况下大大提高您的处理性能。当您开发更精细的流程时,更好的控制(不仅仅是执行 BULK COLLECT)会很有帮助。
祝您在 Oracle 之旅中好运。我已经使用它 14 年了,是它的忠实粉丝。
我是 PL/SQL 的初学者,在学习课程期间我看到了 CURSOR
我想知道我们为什么要使用它,什么时候使用?
非常感谢
当您执行 SELECT 并且 returns 多行时,您无法将这些行保存在 变量中,因此您必须使用 CURSOR。如果您熟悉编程,那么 CURSOR 类似于 Array。 因此,如果您执行 SELECT 并将结果保存在代码中的变量中:
SELECT id INTO v_id FROM table;
并且如果返回多行,则无法将这些行保存在变量 v_id 中,并且 TOO_MANY_ROWS 将抛出异常。 参考:http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23plsql-1906474.html
此外,如果您看过 Oracle 的 FOR ... IN (SELECT ...) ... LOOP ... END LOOP 语句,那就是使用隐式游标。
使用显式游标方法的原因是您可以使用游标做更多的事情,例如BULK COLLECT,它可以在许多但不是所有情况下大大提高您的处理性能。当您开发更精细的流程时,更好的控制(不仅仅是执行 BULK COLLECT)会很有帮助。
祝您在 Oracle 之旅中好运。我已经使用它 14 年了,是它的忠实粉丝。