Anda harus dapat melakukan ini dalam beberapa pernyataan tanpa menggunakan kursor atau kode prosedural lainnya. Pastikan semuanya dalam satu transaksi:
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
Tentu saja, tambahkan penanganan kesalahan yang tepat dan pastikan untuk mengujinya terlebih dahulu.
Juga, saya sedikit mengubah beberapa nama tabel dan kolom Anda. Saya tidak ingin membahas konvensi penamaan mana yang lebih baik daripada yang lain, tetapi setidaknya setidaknya konsisten. Jika Anda akan menggunakan garis bawah, gunakan itu. Jika Anda akan menggunakan notasi camel-back, gunakan itu, tetapi jangan mencampurnya. Hal yang sama berlaku untuk nama tabel jamak vs tunggal.