sql >> Database >  >> RDS >> Sqlserver

Looping over een recordset in SQL Server

U zou dit in een aantal uitspraken moeten kunnen doen zonder het gebruik van een cursor of andere procedurele code. Zorg ervoor dat alles in één transactie is:

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

Voeg natuurlijk de juiste foutafhandeling toe en test deze eerst.

Ook heb ik enkele van uw tabel- en kolomnamen enigszins gewijzigd. Ik wil niet ingaan op welke specifieke naamgevingsconventies beter zijn dan andere, maar op minstens wees consistent. Als je onderstrepingstekens gaat gebruiken, gebruik ze dan. Als je in plaats daarvan camel-back-notatie gaat gebruiken, gebruik dat dan, maar meng ze niet. Hetzelfde geldt voor meervoud versus enkelvoudige tabelnamen.



  1. sql ORDER DOOR meerdere waarden in een specifieke volgorde?

  2. DateTime gebruiken in een SqlParameter voor opgeslagen procedure, formatteerfout

  3. hoe twee mysql-tabellen in php te vergelijken

  4. Dynamische PL/SQL-query, hoe null-parameters te negeren?