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

Bagaimana cara menjalankan prosedur tersimpan sekali untuk setiap baris yang dikembalikan oleh kueri?

gunakan kursor

TAMBAHAN:[Contoh kursor MS SQL]

declare @field1 int
declare @field2 int
declare cur CURSOR LOCAL for
    select field1, field2 from sometable where someotherfield is null

open cur

fetch next from cur into @field1, @field2

while @@FETCH_STATUS = 0 BEGIN

    --execute your sproc on each row
    exec uspYourSproc @field1, @field2

    fetch next from cur into @field1, @field2
END

close cur
deallocate cur

di MS SQL, ini contoh artikelnya

perhatikan bahwa kursor lebih lambat dari operasi berbasis set, tetapi lebih cepat dari loop sementara manual; lebih detail dalam pertanyaan SO ini

TAMBAHAN 2:jika Anda akan memproses lebih dari beberapa catatan, tarik ke dalam tabel temp terlebih dahulu dan jalankan kursor di atas tabel temp; ini akan mencegah SQL meningkat menjadi kunci tabel dan mempercepat operasi

TAMBAHAN 3:dan tentu saja, jika Anda dapat menyelaraskan apa pun yang dilakukan prosedur tersimpan Anda ke setiap ID pengguna dan menjalankan semuanya sebagai satu pernyataan pembaruan SQL, itu akan optimal



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. POWER() Contoh di SQL Server

  2. Bagaimana cara menghasilkan nomor acak untuk setiap baris dalam pemilihan T-SQL?

  3. Cara Mencadangkan Database SQL Server menggunakan T-SQL

  4. SQL Server:Bagaimana cara menggunakan UNION dengan dua kueri yang KEDUAnya memiliki klausa WHERE?

  5. pyodbc tidak dapat terhubung ke database