Du bør være i stand til at gøre dette i et par sætninger uden brug af en markør eller anden procedurekode. Bare sørg for, at det hele er i én transaktion:
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
Tilføj selvfølgelig korrekt fejlhåndtering og sørg for at teste dette først.
Desuden har jeg ændret lidt på nogle af dine tabel- og kolonnenavne. Jeg ønsker ikke at komme ind på, hvilke specifikke navnekonventioner der er bedre end andre, men i det mindste være konsekvent. Hvis du vil bruge understregninger, så brug dem. Hvis du vil bruge camel-back notation i stedet, så brug det, men lad være med at blande dem. Det samme gælder for tabelnavne i flertal kontra ental.