カーソルやその他の手続き型コードを使用せずに、いくつかのステートメントでこれを実行できるはずです。すべてが 1 つのトランザクション内にあることを確認してください:
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
プレ>もちろん、適切なエラー処理を追加し、最初にこれをテストしてください。
また、テーブル名と列名の一部を少し変更しました。どの特定の命名規則が他のものよりも優れているかについては触れたくありませんが、少なくとも 一貫してください。アンダースコアを使用する場合は、それらを使用してください。代わりにキャメルバック表記を使用する場合は、それを使用しますが、それらを混在させないでください。同じことが、複数形と単数形のテーブル名にも当てはまります。