U zou dit in een aantal uitspraken moeten kunnen doen zonder het gebruik van een cursor of andere procedurele code. Zorg ervoor dat alles in één transactie is:
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
Voeg natuurlijk de juiste foutafhandeling toe en test deze eerst.
Ook heb ik enkele van uw tabel- en kolomnamen enigszins gewijzigd. Ik wil niet ingaan op welke specifieke naamgevingsconventies beter zijn dan andere, maar op minstens wees consistent. Als je onderstrepingstekens gaat gebruiken, gebruik ze dan. Als je in plaats daarvan camel-back-notatie gaat gebruiken, gebruik dat dan, maar meng ze niet. Hetzelfde geldt voor meervoud versus enkelvoudige tabelnamen.