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

Apakah ada cara untuk mengulang variabel tabel di TSQL tanpa menggunakan kursor?

Pertama-tama Anda harus benar-benar yakin bahwa Anda perlu mengulangi setiap baris — operasi berbasis set akan bekerja lebih cepat dalam setiap kasus yang dapat saya pikirkan dan biasanya akan menggunakan kode yang lebih sederhana.

Bergantung pada data Anda, pengulangan dapat dilakukan hanya dengan SELECT pernyataan seperti yang ditunjukkan di bawah ini:

Declare @Id int

While (Select Count(*) From ATable Where Processed = 0) > 0
Begin
    Select Top 1 @Id = Id From ATable Where Processed = 0

    --Do some processing here

    Update ATable Set Processed = 1 Where Id = @Id 

End

Alternatif lain adalah dengan menggunakan tabel sementara:

Select *
Into   #Temp
From   ATable

Declare @Id int

While (Select Count(*) From #Temp) > 0
Begin

    Select Top 1 @Id = Id From #Temp

    --Do some processing here

    Delete #Temp Where Id = @Id

End

Opsi yang harus Anda pilih sangat bergantung pada struktur dan volume data Anda.

Catatan: Jika Anda menggunakan SQL Server, Anda akan lebih baik menggunakan:

WHILE EXISTS(SELECT * FROM #Temp)

Menggunakan COUNT harus menyentuh setiap baris dalam tabel, EXISTS hanya perlu menyentuh yang pertama (lihat jawaban Josef di bawah).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menambahkan atau Menghapus Kolom dengan Menggunakan GUI di SQL Server - Tutorial SQL Server / T-SQL Bagian 39

  2. Cari Tahu apakah Objek adalah Tabel Buatan Pengguna di SQL Server dengan OBJECTPROPERTY()

  3. Pernyataan CASE WHEN untuk klausa ORDER BY

  4. Objek 'DF__*' bergantung pada kolom '*' - Mengubah int menjadi double

  5. Bagaimana Anda menentukan nomor port yang berbeda di SQL Management Studio?