Sql server 理解sqlcusros语法
我正在查看以下链接上的Sql server 理解sqlcusros语法,sql-server,sql-server-2008,cursor,Sql Server,Sql Server 2008,Cursor,我正在查看以下链接上的光标示例: 这是一个非常简单的例子,但我无法理解以下内容: 为什么定义中有两次FETCH 当它打开光标时,我们看到它发生了,然后在while循环中,同样的FETCH发生了 我们可以做些什么来让代码更干净、更少冗余 第一次提取是在开始循环之前填充变量 第二个获取是为循环的下一次迭代填充这些变量。如果变量的内容已用完,循环的@FETCH\u STATUS=0部分将使您退出 不幸的是,这一点很清楚,因为我认为您可以将其用于游标。您希望仅游标执行此操作还是其他任何方法。尽量避免
光标示例:
这是一个非常简单的例子,但我无法理解以下内容:
- 为什么定义中有两次
FETCH
- 当它打开光标时,我们看到它发生了,然后在while循环中,同样的
FETCH
发生了
- 我们可以做些什么来让代码更干净、更少冗余
第一次提取是在开始循环之前填充变量
第二个获取是为循环的下一次迭代填充这些变量。如果变量的内容已用完,循环的@FETCH\u STATUS=0部分将使您退出
不幸的是,这一点很清楚,因为我认为您可以将其用于游标。您希望仅游标执行此操作还是其他任何方法。尽量避免光标移动。
USE AdventureWorks
GO
DECLARE @ProductID INT
DECLARE @getProductID CURSOR
SET @getProductID = CURSOR FOR
SELECT ProductID
FROM Production.Product
OPEN @getProductID
FETCH NEXT FROM @getProductID INTO @ProductID
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @ProductID
FETCH NEXT FROM @getProductID INTO @ProductID
END
CLOSE @getProductID
DEALLOCATE @getProductID
GO