使用CURSOR遍历数据集

时间:2018-07-12 15:46:08

标签: tsql sql-server-2012 cursor iteration

我正在使用游标遍历数据集,一一检查每个记录的特定列(Myfield)的值。我知道这与SQL如何分析数据集相反,但是在这种情况下,我必须使用此方法。

是否可以编写一个条件来检查已定义列的值?像

If Myfield = 0 
    @number = @number + 1
ELSE 
    @number = @number + 2

我已经这样定义了游标:

SET @MyCursor = CURSOR FOR 
                    SELECT * FROM Table1

但是对于T-SQL来说显然这还不够-它会引发错误

  

无效的列名...

1 个答案:

答案 0 :(得分:0)

您需要为所需的结果集声明游标,并为要比较的行中的每个字段声明变量。

DECLARE @myField AS INT

DECLARE my_cursor CURSOR FOR
SELECT compareField FROM Table1

OPEN my_cursor

FETCH NEXT FROM my_cursor   
INTO @myField  

WHILE @@FETCH_STATUS = 0  
BEGIN
    If @myField = 0 THEN
         --do something--
    ELSE 
         --do something else--
    END IF

    FETCH NEXT FROM my_cursor
    INTO @myField
END

CLOSE my_cursor
DEALLOCATE my_cursor