Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използване на цикъл While за актуализация на SQL Server

Това всъщност няма да работи, тъй като не можете да поставите името на колоната в кавички. Това, което по същество правите, е да накарате SQL да сравнява два низа, които винаги ще бъдат различни, което означава, че никога няма да извършите актуализация.

Ако трябва да го направите по този начин, ще трябва да имате нещо като...

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

Като цяло обаче бих обезсърчил тази практика. Не съм фен на динамичния SQL, който се генерира в друг SQL израз за какъвто и да е производствен код. Много полезно за извършване на еднократни задачи за разработка, но не ми харесва за код, който може да бъде изпълнен от потребител.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкна няколко реда в SQL с помощта на съхранени процедури?

  2. Случай за надграждане на хардуера на сървър на база данни на SQL Server

  3. Задайте всички 0 стойности на NULL

  4. SQL Server:Как да прекъсна серия от партиди в Query Analyzer?

  5. Форматиране на число със запетаи, но без десетични знаци в SQL Server 2008 R2?