在SQL中使用游标

时间:2017-08-11 07:25:15

标签: cursor sql-server-2014

我想知道游标有什么用?我在google上搜索并且我读到光标用于操作数据,就像在这个例子中游标是使用..在这个例子中,select语句Select firstName, lastName FROM myTable返回行

当我用游标执行整个查询然后返回与select语句返回相同的那么有什么区别?我们可能只使用select而不是游标?这里的游标有什么用?任何人都可以用简单的话来解释

   DECLARE @fName varchar(50), @lName varchar(50)

DECLARE cursorName CURSOR -- Declare cursor

LOCAL SCROLL STATIC

FOR

Select firstName, lastName FROM myTable

OPEN cursorName -- open the cursor

FETCH NEXT FROM cursorName

   INTO @fName, @lName

   PRINT @fName + ' ' + @lName -- print the name

WHILE @@FETCH_STATUS = 0

BEGIN

   FETCH NEXT FROM cursorName

   INTO @fName, @lName

   PRINT @fName + ' ' + @lName -- print the name

END

CLOSE cursorName -- close the cursor

DEALLOCATE cursorName -- Deallocate the cursor

1 个答案:

答案 0 :(得分:0)

许多DBA和开发人员与游标有着爱/恨的关系。有些人会告诉你不要使用它,有些人则认为没有危险,你可以使用它。与许多其他工具一样,游标只是在某些特定场景中使用的另一种工具,正确使用它可能是一个很棒的工具。但错误使用可能会导致严重的性能问题。

游标连续工作,是RBAR" Row By Agonizing Row"而不是tsql闪耀的基于集合的操作。你提供的样本是一个非常糟糕的正确光标使用样本,是的,它可以向你展示光标的工作原理,但是你评论说,可以用一个简单的 SELECT 来完成同样的动作。

如果你对你喜欢的搜索引擎进行快速搜索会找到很多关于游标的好参考资料,这里有一些要阅读: