sql >> Base de Datos >  >> RDS >> Sqlserver

Recorriendo un conjunto de registros en SQL Server

Debería poder hacer esto en un par de declaraciones sin el uso de un cursor u otro código de procedimiento. Solo asegúrate de que esté todo en una sola transacción:

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

Por supuesto, agregue el manejo de errores adecuado y asegúrese de probar esto primero.

Además, modifiqué ligeramente algunos de los nombres de sus tablas y columnas. No quiero entrar en qué convenciones de nomenclatura específicas son mejores que otras, pero al menos al menos se consistente. Si vas a usar guiones bajos, úsalos. Si va a utilizar la notación camel-back, utilícela, pero no las mezcle. Lo mismo ocurre con los nombres de tablas en plural y en singular.