2017-08-11 78 views
0

我想知道游标的用途是什么?我在谷歌搜索和我读了光标用于操纵就像这个例子光标使用。在这个例子中,select语句Select firstName, lastName FROM myTable返回行在SQL中使用游标

和数据,当我与光标执行整个查询那么这将返回相同的选择声明返回所以有什么区别?我们可能只使用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 

回答

0

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

游标在一行的基础上工作,是RBAR“Row By Agonizing Row”的完美示例,而不是tsql闪耀的基于集合的操作。您提供的示例是一个非常糟糕的正确游标使用示例,是的,它可以向您显示游标的工作方式,但正如您所评论的那样,可以使用简单的SELECT完成相同的操作。

如果你做你的首选搜索引擎的快速搜索会找到很多有关游标的好参考,这里有一些阅读: