sql >> Database teknologi >  >> RDS >> Sqlserver

Brug af While Loop til SQL Server Update

Dette virker faktisk ikke, da du ikke kan have kolonnenavnet i anførselstegn. Det, du i bund og grund gør, er at få SQL til at sammenligne to strenge, der altid vil være forskellige, hvilket betyder, at du aldrig vil udføre en opdatering.

Hvis du skal gøre det på denne måde, skal du have noget som...

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

Generelt vil jeg dog fraråde denne praksis. Jeg er ikke fan af, at dynamisk SQL genereres inde i en anden SQL-sætning til nogen form for produktionskode. Meget nyttigt til at udføre engangsudviklingsopgaver, men jeg kan ikke lide det for kode, der kunne blive eksekveret af en bruger.



  1. Oracle SELECT - Dobbelte anførselstegn eller ingen dobbelte anførselstegn?

  2. MySQL Vælg ID'er, der forekommer på forskellige rækker med flere specifikke værdier for en kolonne

  3. Hvordan får jeg tid fra DateTime-format i SQL?

  4. Hvordan forhindrer jeg DateTimeOffset-skalaen i at forårsage en ChangeConflictException i linq til Sql?