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

Vòng qua một tập bản ghi trong SQL Server

Bạn có thể thực hiện việc này trong một vài câu lệnh mà không cần sử dụng con trỏ hoặc mã thủ tục khác. Chỉ cần đảm bảo rằng tất cả trong một giao dịch:

BEGIN TRANSACTION

INSERT INTO crrsql.dbo.AR_Transactions (
    cashier_id,
    cust_num,
    balance,
    transaction_date)
SELECT
    100199,
    cust_num,
    -acct_balance,
    DATEADD(MINUTE, -30, current_date)
FROM crrsql.dbo.Customers
WHERE acct_balance <> 0

UPDATE crrsql.dbo.Customers SET acct_balance = 0 WHERE acct_balance <> 0

COMMIT TRANSACTION

Tất nhiên, hãy thêm xử lý lỗi thích hợp và đảm bảo kiểm tra điều này trước.

Ngoài ra, tôi đã thay đổi một chút tên bảng và cột của bạn. Tôi không muốn đi sâu vào quy ước đặt tên cụ thể nào tốt hơn các quy ước đặt tên khác, nhưng ít nhất nhất quán. Nếu bạn định sử dụng dấu gạch dưới, hãy sử dụng chúng. Nếu bạn định sử dụng ký hiệu lạc đà thay thế thì hãy sử dụng ký hiệu đó, nhưng đừng kết hợp chúng. Tương tự đối với tên bảng số nhiều so với số ít.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bắt đầu với SQL Server 2017 trên Linux trong cổng Azure

  2. Làm cách nào để sử dụng lệnh `sqlcmd` mà không cần tên người dùng và mật khẩu trong SQL Server 2008?

  3. Hiểu chức năng bảo mật máy chủ SQL HAS_Permis_BY_Name và các trường hợp sử dụng của nó

  4. Làm cách nào để viết CẬP NHẬT SQL với bí danh Bảng trong SQL Server 2008?

  5. Lý do nên nâng cấp lên SQL Server 2017