2010-09-22 65 views
16

因此,我正在編寫這個存儲過程,並且我真的很喜歡SQL。SQL選擇一行並存儲在一個SQL變量中

我對你們的問題是:

我可以選擇整個行並將其存儲在一個變量?

我知道我可以這樣做:

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

但我可以從sometable選擇整個行並將其存儲在一個變量?

回答

26

您可以選擇字段到多個變量:

DECLARE @A int, @B int 

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

另外,可能更好,方法是使用一個表變量:

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

然後,您可以從喜歡你的表變量選擇一個常規的桌子。

+0

我猜我可以這樣做......這可能是在這種情況下最好的解決方案...我基本上是試圖清理我的殘酷的SQL代碼,這將使它更清潔,現在我基本上有相同的代碼在else塊中的if塊......這將至少擺脫一些重複的代碼... – EJC 2010-09-22 21:23:22

+0

@EJC:「現在我基本上在else塊中的if塊上有相同的代碼」 - note從性能的角度來看,你目前的方法可能會更好,但顯然你需要測試。當然是 – onedaywhen 2010-09-23 08:53:55

+0

! :) 感謝您的建議 – EJC 2010-09-23 12:59:57

5

您可以創建一個表格模式相匹配的表變量,並存儲在它的單行:

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