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... 🙁

InformationsquelleAutor bdlcne | 2012-05-12
Schreibe einen Kommentar