Also von gaaanz von vorne:
U.a. über eine Web-Maske werden Datensätze in die
DB geschrieben, die mittels einer Software verwaltet werden. (Es sind beides Fremdprodukte!)
Um diese neuen Datensätze automatisch zu klassizieren (bzw. weitere Daten anzuhängen), soll die SP jeden Datensatz, welcher noch nicht klassifiziert ist, "bearbeiten". In einem View sind bereits alle zu bearbeiten Datensätze gefiltert und die Werte, welche in die "Haupttabelle" geschrieben werden sollen, angehängt. Ich muss also diese Werte eigentlich nur noch in die "Haupttabelle" zurückschreiben lassen.
Soviel zu Umgebung.
Das "eigentlich nur noch" stellt sich aber als schwierig heraus.
Den Ablauf stelle ich mir so vor:
- Abfrage des Views
- Schleife: Mit jedem erhalten Datensatz die "Haupttabelle" aktualisieren.
Mein erster Ansatz sieht so aus:
Haupttabelle, bevor die SP ausgeführt wurde:
A | B |
-----------
1 | U |
2 | V |
3 | W |
4 | X |
5 | Y |
6 | Z |
....
Die SP:
Zitat:
SQL-Code:
While (Select A,B from Tabelle where Bedingung) do
begin
Update Tabelle set A = (Select X from View where B)
...
end
Haupttabelle, nachdem die SP ausgeführt ist:
A | B |
-----------
1 | A |
2 | B |
3 | C |
4 | D |
5 | F |
6 | G |
...
[Um Missverständnissen vorzubeugen: Nicht alle Datensätze müssen geändert werden! ]
Mein Problem ist die Schleife. In PHP würde ich mit "foreach" die Ergebnismenge durchgehen. Wie macht man dies im
MSSQL-Server?
Ach ja:
Zitat:
Nochmal:
Zitat:
Versuchs doch mal.
evtl. mit vereinfachten Beispieldaten ...
Ich habe es probiert, aber leider besteht das Script den Syntax-Check im Enterprise Manager nicht. Selbst verständlich mit richtigen Tabellen-, Spaltennamen. Davon abgesehen, sehe ich nicht, wie dein Beispiel das Problem lösen soll. Oder bin ich nur zu blöd