ID Artikel: 111401 - Kajian Terakhir: 14 September 2011 - Revisi: 2.0

Bagaimana iterate melalui hasil ditetapkan dengan menggunakan Transact-SQL dalam SQL Server

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menjelaskan berbagai metode yang dapat Anda gunakan untuk mensimulasikan logika FETCH-NEXT kursor-seperti dalam prosedur yang tersimpan, memicu, atau batch Transact-SQL.

Menggunakan Transact-SQL pernyataan untuk melalui hasil

Ada tiga metode yang dapat Anda gunakan untuk iterate melalui hasil ditetapkan dengan menggunakan pernyataan Transact-SQL.

Salah satu metode adalah penggunaan Temp tabel. Dengan metode ini, Anda membuat sebuah "snapshot" dari pernyataan pilih awal dan menggunakannya sebagai dasar untuk "cursoring." Misalnya:
/********** example 1 **********/ 

declare @au_id char( 11 )

set rowcount 0
select * into #mytemp from authors

set rowcount 1

select @au_id = au_id from #mytemp

while @@rowcount <> 0
begin
    set rowcount 0
    select * from #mytemp where au_id = @au_id
    delete #mytemp where au_id = @au_id

    set rowcount 1
    select @au_id = au_id from #mytemp<BR/>
end
set rowcount 0
				

Metode kedua adalah dengan menggunakan min fungsi "berjalan" tabel satu baris pada satu waktu. Metode ini menangkap baris baru yang ditambahkan setelah disimpan prosedur dimulai pelaksanaan, asalkan baris baru memiliki unik pengenal lebih besar dari baris saat ini yang sedang diproses dalam permintaan. Misalnya:
/********** example 2 **********/ 

declare @au_id char( 11 )

select @au_id = min( au_id ) from authors

while @au_id is not null
begin
    select * from authors where au_id = @au_id
    select @au_id = min( au_id ) from authors where au_id > @au_id
end
				
CATATAN: Contoh kedua 1 dan 2 menganggap bahwa pengenal unik yang ada untuk setiap baris dalam tabel sumber. Dalam beberapa kasus, pengenal unik tidak mungkin ada. Jika ini terjadi, Anda dapat mengubah Temp Tabel metode menggunakan kolom kunci yang baru dibuat. Misalnya:
/********** example 3 **********/ 

set rowcount 0
select NULL mykey, * into #mytemp from authors

set rowcount 1
update #mytemp set mykey = 1

while @@rowcount > 0
begin
    set rowcount 0
    select * from #mytemp where mykey = 1
    delete #mytemp where mykey = 1
    set rowcount 1
    update #mytemp set mykey = 1
end
set rowcount 0
				



Berlaku bagi:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Kata kunci: 
kbsqlsetup kbhowtomaster kbmt KB111401 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:111401  (http://support.microsoft.com/kb/111401/en-us/ )