0
这是我在任何论坛上的第一篇文章,要求帮助SQL。我总是通过搜索找到我需要的答案(通常在本网站上)。CURSOR与更新列名变量
我有一个游标,其中包含列名称的变量列名和where子句。
有人可以告诉我为什么说很多行已更新,但我的数据从未改变? #WHold是一个临时表,它包含我需要循环访问的列名。它也涉及行数据值。我可以使用数据透视表,但我很好奇为什么这个游标不起作用。
如果我运行更新语句,行更新。
---我的Update语句---
UPDATE MT
SET MT.[10004] = MTD.WHoldAmt
FROM dbo.MyData MT
INNER JOIN dbo.MyDataDetail MTD
ON MT.EEID = MTD.EEID AND MTD.WHold = '10004'
---我的光标---
DECLARE @ColumnName VARCHAR(100)
DECLARE @getColumnName CURSOR
DECLARE @MTColumnName VARCHAR(100)
SET @getColumnName = CURSOR FOR
SELECT WHold,'MT.['+WHold+']' FROM #Whold
OPEN @getColumnName
FETCH NEXT FROM @getColumnName INTO @ColumnName,@MTColumnName
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE MT
SET @MTColumnName = MTD.WHoldAmt
FROM dbo.MyData MT
INNER JOIN dbo.MyDataDetail MTD ON MT.EEID = MTD.EEID AND MTD.WHold = @ColumnName
FETCH NEXT
FROM @getColumnName INTO @ColumnName,@MTColumnName
END
CLOSE @getColumnName
DEALLOCATE @getColumnName
---从游标结果虽然没有数据的改变表迈德特---
(531行(一个或多个)受影响)
(8行(一个或多个)受影响)
(2757行(一个或多个)受影响)
(1行(一个或多个)受影响)
(受影响2行(S))
(1行(一个或多个)受影响)
(14行(一个或多个)受影响)
(461行(一个或多个)受影响)
(511行(一个或多个)受影响)
(17行(S)的影响)
(9行(S)的影响)
(3列(S)的影响)
谢谢
工作正常!谢谢!标记为答案:) – Fred