首页 > 解决方案 > 在 T-SQL 中声明游标时出现语法错误

问题描述

我在尝试运行以下代码以声明一个游标时遇到语法错误,该游标贯穿并打印我的OrderTable.

第 3 行第 11 列的解析错误:“OrderCursor”附近的语法不正确。

你能帮我弄清楚我在这里错过了什么吗?或者这可能与我的数据库版本有关,即:Microsoft Azure SQL 数据仓库 - 10.0.9999.0 n?

谢谢你的帮助

DECLARE @Order VARCHAR(11) 
DECLARE @Variant INT

DECLARE OrderCursor CURSOR FOR 
     SELECT TOP 10 ORDER_ID, Variant 
     FROM OrderTable

OPEN OrderCursor

FETCH NEXT FROM OrderCursor INTO @Order, @Variant

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT 'Order no:' + @Order + @Variant

    FETCH NEXT FROM OrderCursor INTO @Order, @Variant
END

CLOSE OrderCursor
DEALLOCATE OrderCursor

标签: sql-servertsqlazure-sql-data-warehouse

解决方案


Azure SQL 数据仓库不支持游标。有关如何用循环替换它们的提示,请参见此处。希望是多余的,但只是引用链接中第一个有意义的段落:

但是,在深入研究之前,您应该问自己以下问题:“可以重写此光标以使用基于集合的操作吗?” 在许多情况下,答案是肯定的,而且通常是最好的方法。基于集合的操作通常比迭代的逐行方法执行得更快。


推荐阅读