Vous devriez pouvoir le faire en quelques instructions sans utiliser de curseur ou d'autre code procédural. Assurez-vous simplement que tout est en une seule transaction :
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
Bien sûr, ajoutez une gestion des erreurs appropriée et assurez-vous de tester cela en premier.
De plus, j'ai légèrement modifié certains de vos noms de table et de colonne. Je ne veux pas entrer dans les conventions de dénomination spécifiques qui sont meilleures que d'autres, mais au moins être cohérent. Si vous comptez utiliser des traits de soulignement, utilisez-les. Si vous allez utiliser la notation camel-back à la place, utilisez-la, mais ne les mélangez pas. Il en va de même pour les noms de table au pluriel ou au singulier.