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

Utilizzo di While Loop per l'aggiornamento di SQL Server

In realtà non funzionerà, poiché non puoi avere il nome della colonna tra virgolette. Quello che stai essenzialmente facendo è fare in modo che SQL confronti due stringhe che saranno sempre diverse, il che significa che non eseguirai mai un aggiornamento.

Se devi farlo in questo modo, dovresti avere qualcosa del tipo...

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

In generale, tuttavia, sconsiglierei questa pratica. Non sono un fan dell'SQL dinamico generato all'interno di un'altra istruzione SQL per qualsiasi tipo di codice di produzione. Molto utile per svolgere attività di sviluppo una tantum, ma non mi piace per il codice che potrebbe essere eseguito da un utente.