Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden der While-Schleife für das SQL Server-Update

Dies funktioniert nicht wirklich, da Sie den Spaltennamen nicht in Anführungszeichen setzen können. Was Sie im Wesentlichen tun, ist, dass SQL zwei Strings vergleicht, die immer unterschiedlich sein werden, was bedeutet, dass Sie niemals eine Aktualisierung durchführen werden.

Wenn Sie es auf diese Weise tun müssen, müssen Sie etwas wie ...

haben
DECLARE @a INT 
DECLARE @b VARCHAR 
SET @a = 1

WHILE @a < 30
BEGIN
set @b = @a  
exec sp_executesql N'UPDATE source set h = h + 'x_'[email protected] + N'
           where y_'[email protected] + N' = ''Sold'''   

SET @a = @a + 1
END

Generell würde ich aber von dieser Praxis abraten. Ich bin kein Fan von dynamischem SQL, das innerhalb einer anderen SQL-Anweisung für irgendeine Art von Produktionscode generiert wird. Sehr nützlich für einmalige Entwicklungsaufgaben, aber ich mag es nicht für Code, der von einem Benutzer ausgeführt werden könnte.