Hallo SQL-Entwickler,
ich habe eine etwas komplexere UPDATE-Abfrage, die ich in meinem Code mit jeweils veränderten Spaltennamen mehrfach ausführen will. Ganz grob: Es sollen zwei Spalten, die verschiedene Zeiten enthalten ausgewählt werden und die Zeitdifferenz zwischen den Spalten gebildet werden und in eine weitere Spalte eingefügt werden. Das funktioniert auch.
Natürlich kann ich diese Abfrage 10 mal in meinen Code einfügen und die Spaltennamen jeweils ändern. Aber das ist ja nicht wirklich schön, oder?
Ich hatte mich jetzt dazu schon belesen und eine Realisierung mit einer Prozedur gefunden:
ALTER PROCEDURE [dbo].[Prozedur3] @Wert1 nvarchar(50), @Wert2 nvarchar(50), @Wert3 nvarchar(50), AS BEGIN SET NOCOUNT OFF; DECLARE @sqlText nvarchar(max); SET @sqlText = N' Update Tabelle1 Set ' + @Wert3 + ' = select datediff(second, ' + @Wert1 + ', ' + @Wert2 + ') Where ... ' Exec (@sqlText) End
(der Code innerhalb der Prozedur ist in Wirklichkeit sehr viel größer)
Und in meinem Hauptcode führe ich die Prozedur dann mehrfach mit
Exec Prozedur3 'Spalte1', 'Spalte2', 'Spalte3'
aus und verändere die Spaltennamen.
Das funktioniert auch.
Ich habe jetzt aber schon mehrfach gelesen, dass man sowas nicht macht.
Wie macht man sonst sowas?
Wenn ihr sonst Infos benötigt dann meldet euch. Schon einmal vielen Dank und freundliche Grüße!