SQL-Update einer Tabelle basierend auf Werten in cursor der anderen Tabelle
Den Fleck auf meiner Stirn von der Wand ist immer zu rot, also die Entsendung hören....
Ich habe zwei Tabellen und aktualisieren der Werte einer Basis von Auswahlkriterien, die von einem anderen. Ich weiß, ich kann ein update mit einem "wo gibt", aber ich habe viele updates Durchlaufen. Also ich bin versucht, einen cursor zu setzen, die Werte aus einer Tabelle in eine Variable zu verwenden und dann ein update auf die andere Tabelle mit diesen vars. Keine Fehler aufgetreten sind, aber auch keine updates. Wenn ich den code ändern, um eine Select-Anweisung, zeigt er die info richtig, aber das Update funktioniert nicht. Ich bin nicht sicher, wenn es um die Erstellung der cursor mit Hilfe der "for update", da die Tabelle ich bin eine Aktualisierung ist NICHT die gleiche, die der cursor Auswahl der Datensätze aus. Unten ist meine Abfrage. Wer bitte informieren Sie mich, was ich möglicherweise falsch mache. Danke!
DECLARE @so VARCHAR(50)
DECLARE @line VARCHAR(50)
DECLARE @pdate DATETIME
DECLARE @reason1 VARCHAR(50)
DECLARE @reason2 VARCHAR(50)
DECLARE @area VARCHAR(50)
DECLARE mycursor CURSOR FOR
SELECT [bp_so_number],[bp_line],[bp_production_date],[bp_reason1],[bp_reason2],[bp_area]
FROM [Workflow].[dbo].[v_OTD_PostSrc]
OPEN mycursor
FETCH NEXT FROM mycursor
INTO @so, @line, @pdate, @reason1, @reason2, @area
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM mycursor
INTO @so, @line, @pdate, @reason1, @reason2, @area;
UPDATE otd_data SET reason1=@reason1, reason2=@reason2, area=@area
WHERE [Order Number]=@so AND LI=@line AND [Schedule Date]=@pdate AND [Qty Open]>0
--SELECT * FROM otd_data WHERE [Order Number]=@so AND LI=@line AND [Schedule Date]=@pdate
END
CLOSE mycursor
DEALLOCATE mycursor
Wie ich schon sagte. Keine Fehler, aber auch keine Tabelle aktualisiert... 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei holt sich vor dem ersten update. Versuchen Sie, strukturieren Sie Ihre Schleife als:
Habe ich LOKALE und FAST_FORWARD Optionen, um den cursor. Dokumentation auf FAST_FORWARD: