sql >> Databáze >  >> RDS >> Sqlserver

Použití While Loop pro aktualizaci SQL Server

To ve skutečnosti nebude fungovat, protože nemůžete mít název sloupce v uvozovkách. V podstatě děláte to, že SQL porovnává dva řetězce, které se budou vždy lišit, což znamená, že nikdy neprovedete aktualizaci.

Pokud to musíte udělat tímto způsobem, museli byste mít něco jako...

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

Obecně bych však tuto praxi odrazoval. Nejsem fanouškem dynamického SQL generovaného v jiném SQL příkazu pro jakýkoli druh produkčního kódu. Velmi užitečné pro provádění jednorázových vývojových úkolů, ale nelíbí se mi to pro kód, který by mohl spustit uživatel.



  1. Oprava:„přední přesnost intervalu je příliš malá“ v databázi Oracle

  2. Zjistěte, zda má parametr SP v T-SQL výchozí hodnotu

  3. výběr horního sloupce1 s odpovídajícím sloupcem2

  4. Dotaz MySQL pro aktualizaci záznamů se zvýšeným datem