Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Fazendo um loop em um conjunto de registros no SQL Server


Você deve ser capaz de fazer isso em algumas instruções sem o uso de um cursor ou outro código de procedimento. Apenas certifique-se de que está tudo em uma transação:
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

Claro, adicione o tratamento de erros adequado e certifique-se de testar isso primeiro.

Além disso, alterei um pouco alguns dos nomes de suas tabelas e colunas. Não quero entrar em quais convenções de nomenclatura específicas são melhores que outras, mas pelo menos ser consistente. Se você for usar sublinhados, use-os. Se você for usar a notação camel-back, use-a, mas não as misture. O mesmo vale para nomes de tabelas plurais versus singulares.