sql >> Database >  >> RDS >> Sqlserver

While Loop gebruiken voor SQL Server-update

Dit zal niet echt werken, omdat de kolomnaam niet tussen aanhalingstekens mag staan. Wat u in wezen doet, is dat SQL twee strings vergelijkt die altijd verschillend zullen zijn, wat betekent dat u nooit een update zult uitvoeren.

Als je het op deze manier moet doen, zou je iets moeten hebben als...

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

Over het algemeen zou ik deze praktijk echter ontmoedigen. Ik ben geen fan van dynamische SQL die wordt gegenereerd in een andere SQL-instructie voor welke productiecode dan ook. Erg handig voor het uitvoeren van eenmalige ontwikkelingstaken, maar ik hou er niet van voor code die door een gebruiker kan worden uitgevoerd.



  1. Tenant-ID doorgeven via sql-serververbinding

  2. Wat zijn de sqlite-equivalenten van MySQL's INTERVAL en UTC_TIMESTAMP?

  3. Kill MySQL-query bij afbreken gebruiker

  4. Hoe grafiek/hiërarchische gegevens opvragen in mysql