sql >> Database teknologi >  >> RDS >> Sqlserver

Sløjfer over et recordset i SQL Server

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.



  1. Hvorfor står mine Airflow-opgaver i kø, men kører ikke?

  2. Oracle SQL Regex returnerer ikke forventede resultater

  3. Kan vi yderligere forenkle denne MySQL-forespørgsel?

  4. Opbygning af forespørgsler dynamisk i skinner