使用 CURSOR 遍历数据集
Iterating through a dataset using CURSOR
我正在使用游标遍历数据集,逐条检查每条记录的特定列 (Myfield
) 的值。我知道这与 SQL 分析数据集的方式相反,但在这种情况下我必须使用这种方法。
是否可以编写一个条件来检查已定义列的值?像
If Myfield = 0
@number = @number + 1
ELSE
@number = @number + 2
我是这样定义游标的:
SET @MyCursor = CURSOR FOR
SELECT * FROM Table1
但显然这对于 T-SQL 是不够的 - 它会抛出错误
Invalid column name...
您需要为所需的结果集声明游标,并为要比较的行中的每个字段声明变量。
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
我正在使用游标遍历数据集,逐条检查每条记录的特定列 (Myfield
) 的值。我知道这与 SQL 分析数据集的方式相反,但在这种情况下我必须使用这种方法。
是否可以编写一个条件来检查已定义列的值?像
If Myfield = 0
@number = @number + 1
ELSE
@number = @number + 2
我是这样定义游标的:
SET @MyCursor = CURSOR FOR
SELECT * FROM Table1
但显然这对于 T-SQL 是不够的 - 它会抛出错误
Invalid column name...
您需要为所需的结果集声明游标,并为要比较的行中的每个字段声明变量。
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