2010-09-22 27 views
16

saklayın. Bu Stored Proc'u yazıyorum ve gerçekten SQL'de emiyorum. Eğer adamlaraSQL Bir satır seçin ve bir SQL değişkeni içinde

Benim Soru geçerli:

bütün bir satır seçip bir değişkenine depolamak miyim?

Ben böyle bir şey yapabileceğini biliyorum:

declare @someInteger int 
select @someInteger = (select someintfield from sometable where somecondition) 

Ama sometable gelen tüm satırı seçin ve bir değişkende saklayabilirsiniz?

cevap

26

Birden değişkenlere alanları seçebilirsiniz:

DECLARE @T TABLE (
    A int, 
    B int 
) 
INSERT INTO @T (A, B) 
SELECT 
    Col1, 
    Col2 
FROM SomeTable 
WHERE ... 

Ardından sevdiği tablo değişkeni seçebilirsiniz:

DECLARE @A int, @B int 

SELECT 
    @A = Col1, 
    @B = Col2 
FROM SomeTable 
WHERE ... 

Başka, potansiyel olarak daha iyi, yaklaşım bir tablo değişkeni kullanmak olacaktır düzenli bir masa.

+0

evet ben i guess Bunu yapabilirdi ... Bu durumda en iyi çözüm olabilir ... Temelde acımasız SQL kodumu temizlemeye çalışıyorum ve bunu biraz daha temiz hale getireceğim, şu anda temelde aynı koda sahibim Eğer diğer blokta bulunan blok ise ... bu en azından tekrarlanan kodlardan kurtulacak ... – EJC

+0

@EJC: "hemen şimdi diğer blokta bulunan blokta aynı koda sahibim" - not Mevcut yaklaşımınız performans açısından daha iyi olabilir, ancak açıkçası test etmeniz gerekir. Tabii ki – onedaywhen

+0

! :) tavsiye için teşekkürler – EJC

5

Sen tablo şema eşleşen bir tablo değişken oluşturmak ve içinde tek bir satır depolayabilir: aracılığı/

declare @myrow table(field0 int,field1 varchar(255)) 
insert into @myrow 
select field0,field1 from mytable where field0=1