当我们有不同的循环来遍历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/