SORU
15 EYLÜL 2008, PAZARTESİ


Bir şekilde bir imleç kullanmadan bir masa döngü TSQL değişken var mı?

Hadi aşağıdaki basit tablo değişkeni var ki:

declare @databases table
(
    DatabaseID    int,
    Name        varchar(15),   
    Server      varchar(15)
)
-- insert a bunch rows into @databases

Eğer satırlar arasında dolaşmak istesem ve bir imleç bildirmek kullanarak tek seçeneğim? Başka bir yolu var mı?

CEVAP
15 EYLÜL 2008, PAZARTESİ


Kesinlikle her satır boyunca yineleme tabanlı işlemler ayarlamanız gerekir emin olmalısınız öncelikle daha hızlı aklıma gelen her durumda gerçekleştirecek ve normalde basit bir kod kullanacağız.

Verilerinizi sadece aşağıda gösterildiği gibi seçin deyimleri döngü mümkün olabilir bağlı

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

Başka bir alternatif geçici bir tablo kullanın

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

Seçmeniz gereken seçenek çok veri yapısı ve hacmine bağlıdır.

Not:Eğer SQL Server kullanıyorsanız kullanarak daha iyi hizmet verilebilir:

WHILE EXISTS(SELECT * FROM #Temp)

COUNT kullanarak tablodaki her bir satır dokunmak zorunda olacak, EXISTS yalnızca birinci (Josef's answer aşağıya bakınız) dokunmasına gerek yok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Barnacules Nerdgasm

    Barnacules N

    20 Temmuz 2006
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • MrOctopi

    MrOctopi

    6 Aralık 2010