tsql - 使用 CURSOR 遍历数据集
问题描述
我正在使用游标遍历数据集,Myfield
一一检查每条记录的特定列 ( ) 的值。我知道这与 SQL 分析数据集的方式相反,但在这种情况下我必须使用这种方法。
是否可以编写一个条件来检查已定义列的值?就像是
If Myfield = 0
@number = @number + 1
ELSE
@number = @number + 2
我已经像这样定义了光标:
SET @MyCursor = CURSOR FOR
SELECT * FROM Table1
但显然这对于 T-SQL 来说是不够的——它会引发错误
列名无效...
解决方案
您需要为所需的结果集声明游标,并为要比较的行中的每个字段声明变量。
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
推荐阅读
- azure - Azure OAuth2 代码流,组声明不在访问令牌中,而是在 id 令牌中
- python - Python在合并两个json文件时将额外的paratheses []添加到json文件中
- performance - StreamBuilder 更新性能(一个 vs 多个)
- python - PyTorch 张量切片和内存使用情况
- visual-studio-code - Windows 上的远程容器 - 如何?
- javascript - 在 REACT 中通过 API 构建无限加载时,即使我向下滚动很多页码也不会在控制台中更新
- haskell - Learn you a Haskell for Great Good 中的错字?
- c# - c#中的下拉框记事本如何在按下按钮时加载文本文件?
- python - pySpark 映射多个变量
- linux - 按作者过滤并计算所有数字 im txt 文件 - Linux 终端,bash