b / w的游标和循环有什么区别

时间:2014-03-24 06:18:48

标签: mysql sql oracle stored-procedures

当我们有不同的循环来迭代SQL中的数据时,我无法弄清楚为什么要使用游标。能否请您在这里指导我,区别于什么以及何时使用哪个选项。

1 个答案:

答案 0 :(得分:1)

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

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

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

<强>结论
除非在每一行上都有句柄,否则我们不能使用每行中的值来进行程序操作。

请参阅

  1. Cursor (databases)
    • 在SQL过程中,游标可以定义结果集 (一组数据行)并逐行执行复杂逻辑 基础。
  2. MySQL: Variables in Stored Programs
    • 可以使用查询将查询结果检索到局部变量中 SELECT ... INTO var_list或打开光标并使用FETCH ... INTO var_list
  3. Oracle: Cursor Variables
    • 要执行多行查询,Oracle会打开一个存储的未命名工作区 处理信息。您可以通过显式光标访问此区域, 它命名工作区,或通过游标变量, 它指向工作区..
  4. SQL Server: Cursors
    • 应用程序需要一种机制来处理一行或一小块 一次排。游标是结果集的扩展 提供这种机制。