Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng Vòng lặp Trong khi để Cập nhật Máy chủ SQL

Điều này thực sự sẽ không hoạt động, vì bạn không thể có tên cột trong dấu ngoặc kép. Về cơ bản, những gì bạn đang làm là để SQL so sánh hai chuỗi sẽ luôn khác nhau, có nghĩa là bạn sẽ không bao giờ thực hiện cập nhật.

Nếu bạn phải làm theo cách này, bạn phải có một cái gì đó giống như ...

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

Nói chung, tuy nhiên, tôi không khuyến khích thực hành này. Tôi không phải là người thích SQL động được tạo bên trong một câu lệnh SQL khác cho bất kỳ loại mã sản xuất nào. Rất hữu ích để thực hiện các nhiệm vụ phát triển một lần, nhưng tôi không thích nó đối với mã có thể được thực thi bởi người dùng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa chính tổng hợp + Khóa ngoài

  2. Tạo trình kích hoạt chèn các giá trị vào bảng mới khi một cột được cập nhật

  3. UNION so với DISTINCT về hiệu suất

  4. CẬP NHẬT nếu tồn tại CHÈN khác trong SQL Server 2008

  5. Cột đầu ra tên XML UNION FOR XML