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