Makale numarası: 111401 - Son Gözden Geçirme: 20 Aralık 2005 Salı - Gözden geçirme: 5.3

Nasıl yapılır: SQL Server Transact-SQL kullanarak sonuç arasında yineleme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, bir saklı yordam, tetikleyici veya Transact-SQL toplu imleç benzeri GETIRME NEXT mantığı benzetimini yapmak için kullanabileceğiniz çeşitli yöntemler açıklanır.

Bir sonuç kümesi yineleme için Transact-SQL deyimleri kullanın.

Transact-SQL deyimlerini kullanarak bir sonuç arasında dolaşmak için kullanabileceğiniz üç yöntem vardır.

Geçici tablolarının kullanımını bir yöntemdir. Bu yöntemle, bir "anlık görüntüsünü" ilk SELECT deyimi oluşturmak ve temel olarak kullanmak için "işaretleme." Örneğin:
/********** 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
				

Ikinci yöntem "bir kerede tek bir tablo satırı yürütmek için <a0></a0>" en az işlevini kullanmaktır. Bu yöntem, yürütme, saklı yordam başladıktan sonra yeni bir satır için benzersiz bir tanımlayıcı sorguda işlenen geçerli satır büyük sahip olması koşuluyla, eklenen yeni satırlar yakalar. Örneğin:
/********** 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
				
Not: her iki örnek 1 ve 2 varsayar <a0>Kaynak</a0> tablosundaki her satır için benzersiz bir tanımlayıcı varolduğunu. Bazı durumlarda, benzersiz bir tanımlayıcı olabilir. Servis talebi, yeni oluşturulan bir anahtar sütunu için geçici tablo yöntemi değiştirebilirsiniz. Örneğin:
/********** 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
				



Bu makaledeki bilginin uygulandığı durum:
  • 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 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
Anahtar Kelimeler: 
kbmt kbhowtomaster KB111401 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:111401  (http://support.microsoft.com/kb/111401/en-us/ )