Dies ist mein erster Beitrag in einem Forum um Hilfe mit SQL. Ich habe immer die Antwort gefunden, die ich brauche (normalerweise auf dieser Seite).CURSOR mit Aktualisierungsspalte Name Variable
Ich habe einen Cursor mit einem variablen Spaltennamen und einer WHERE-Klausel, die den Spaltennamen enthält.
Kann mir jemand sagen, warum es heißt, viele Zeilen wurden aktualisiert, aber meine Daten ändern sich nie? #WHold ist eine temporäre Tabelle, die die Spaltennamen enthält, die ich durchlaufen muss. Es bezieht sich auch auf den Zeilendatenwert. Ich könnte eine Pivot-Tabelle verwenden, aber ich bin neugierig, warum dieser Cursor nicht funktioniert.
Wenn ich eine Update-Anweisung ausführen, werden die Zeilen aktualisiert.
--- Meine Update-Anweisung ---
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'
--- Meine CURSOR ---
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
--- Ergebnisse von Cursor obwohl keine der Daten in das geändert wurde MyData --- Tabelle
(531 Zeile (n) betroffen)
(8 Zeile (n) betroffen)
(2757 Zeile (n) betroffen)
(1 Zeile (n) betroffen)
(2 Zeile (n) betroffen)
(1 Zeile (n) betroffen)
(14 Zeilen (n) betroffen)
(461 Zeile (n) betroffen)
(511 Zeile (n) betroffen)
(17 Zeile (n) betroffen)
(9 Zeile (n) betroffen)
(3 Zeile (n) betroffen)
Danke
Das hat funktioniert! Vielen Dank! Als Antwort markiert :) – Fred