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.