Sie sollten dies in ein paar Anweisungen tun können, ohne einen Cursor oder anderen prozeduralen Code zu verwenden. Stellen Sie einfach sicher, dass alles in einer Transaktion erfolgt:
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
Fügen Sie natürlich die richtige Fehlerbehandlung hinzu und testen Sie dies zuerst.
Außerdem habe ich einige Ihrer Tabellen- und Spaltennamen leicht geändert. Ich möchte nicht darauf eingehen, welche spezifischen Namenskonventionen besser sind als andere, aber mindestens konsequent sein. Wenn Sie Unterstriche verwenden, verwenden Sie sie. Wenn Sie stattdessen die Camel-Back-Notation verwenden, verwenden Sie diese, aber mischen Sie sie nicht. Dasselbe gilt für Plural- und Singular-Tabellennamen.