Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengulangi recordset di SQL Server

Anda harus dapat melakukan ini dalam beberapa pernyataan tanpa menggunakan kursor atau kode prosedural lainnya. Pastikan semuanya dalam satu transaksi:

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

Tentu saja, tambahkan penanganan kesalahan yang tepat dan pastikan untuk mengujinya terlebih dahulu.

Juga, saya sedikit mengubah beberapa nama tabel dan kolom Anda. Saya tidak ingin membahas konvensi penamaan mana yang lebih baik daripada yang lain, tetapi setidaknya setidaknya konsisten. Jika Anda akan menggunakan garis bawah, gunakan itu. Jika Anda akan menggunakan notasi camel-back, gunakan itu, tetapi jangan mencampurnya. Hal yang sama berlaku untuk nama tabel jamak vs tunggal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah Anda Menggunakan Alat Pemantauan Kinerja Basis Data yang Tepat?

  2. Bagaimana menemukan alasan kebuntuan di sql server ro14?

  3. Bisakah SQL Server Express LocalDB terhubung dari jarak jauh?

  4. cara menangani pemetaan ulang hanya dapat dilakukan untuk pengguna yang dipetakan ke login Windows atau SQL

  5. Kembalikan Baris yang Mengandung Karakter Non-Alfanumerik di SQL Server