Werte zeilenweise in variablen schreiben (Cursor?)

PaulB

Neuer Benutzer
Beiträge
2
Zunächst stelle ich mich einmal vor in diesem hilfreichen Forum. Ich beschäftige mich schon eine Weile mit MSSQl beruflich. Nun habe ich ein Problem, welches ich selber nicht so elegant gelöst bekomme.
Ich habe eine ziemlich umfangreiche Update Abfrage erstellt um ein Systeme umzuorganisieren. Diese Abfrage benötigt zwei Eingangsvariablen. Nun stellt sich heraus, das der Umfang an Eingangspaaren, also umzuorganisierenden Systemen sehr groß wird. Ich würde sie gerne aus einer Tabelle auslesen und übergeben, wie in einer art Schleife, also Zeile für Zeile. Kennt Jemand eine elegante Lösung?
Ich freue mich über jede Antwort! Beste Grüße und einen schönen Abend!
Paul
 
Werbung:
Darf ich fragen warum genau die Tabelle(n) Zeile für Zeile aktualisiert werden sollen? Läuft ein Log Trigger oder ähnliches?

Eine Schleife kann man mit einem Cursor machen, aber auch z.B. so:
Code:
DECLARE @counter INT,
        @pk UNIQUEIDENTIFIER

SET        @counter = (    SELECT    count(1)
                        FROM    tabelle )

WHILE    @counter > 0
BEGIN
    SET        @pk = (    SELECT    pk
                    FROM (    SELECT    TOP (@counter) pk,
                                    ROW_NUMBER() OVER (ORDER BY pk) AS zeilennr
                            FROM    tabelle
                            ORDER BY pk ) x
                    WHERE    x.zeilennr = @counter )

    -- Aktion

    SET        @counter = @counter - 1
END
 
Vielen Dank für die Antworten. Es handelt sich in dem Skript um einige Inserts und Updates.. Als Eingabewerte brauche ich zwei Spalten aus einer Tabelle für jedes System also zwei Eingabewerte.
Gruß Paul
 
Werbung:
Inserts und Updates kann man aber i.d.R. auch auf mehrere Zeilen gleichzeitig machen. Deine beiden Eingabewerte kannst du ja dazu joinen oder per Variable einbauen.
 
Zurück
Oben