当我们有不同的循环来遍历SQL中的数据时,我不知道为什么要使用游标。您能否在这里指导我,有什么区别以及何时使用哪个选项。

最佳答案

很多时候,我们必须根据结果集返回的一行或更多数据来执行特定操作。要遍历和迭代结果集的每一行,我们需要结果集上的一个句柄。

CURSOR允许在SELECT语句返回的结果集上定义句柄。游标的范围是针对正在执行它的代码块的。与VIEW不同,CURSOR是运行时视图,未定义并存储为数据库对象。

当我们OPEN一个游标时,可以使用FETCH命令来获取每一行并将其存储到变量中。使用这些变量中的值,您可以执行所需的业务逻辑并采取措施。使用REPEAT - UNTIL或任何其他标准循环做法,通过迭代游标来获取游标中的下一行。

结论:
除非每一行都有一个句柄,否则我们不能将每一行中的值用于过程操作。

参考:


Cursor (databases)

在SQL过程中,游标使定义结果集成为可能
(一组数据行)并逐行执行复杂的逻辑
基础。

MySQL: Variables in Stored Programs

可以使用以下命令将查询结果检索到局部变量中
SELECT ... INTO var_list或通过打开光标并使用FETCH... INTO var_list

Oracle: Cursor Variables

要执行多行查询,Oracle将打开一个未命名的工作区,该工作区存储
处理信息。您可以通过显式游标访问此区域,
通过工作区变量或游标变量命名工作区,
指向工作区

SQL Server: Cursors

应用程序需要一种机制来处理一行或一小块
一次的行数。游标是结果集的扩展,
提供该机制。

关于mysql - 黑白游标和SQL循环有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22602307/

10-12 01:06