因此,我正在編寫這個存儲過程,並且我真的很喜歡SQL。SQL選擇一行並存儲在一個SQL變量中
我對你們的問題是:
我可以選擇整個行並將其存儲在一個變量?
我知道我可以這樣做:
declare @someInteger int
select @someInteger = (select someintfield from sometable where somecondition)
但我可以從sometable
選擇整個行並將其存儲在一個變量?
因此,我正在編寫這個存儲過程,並且我真的很喜歡SQL。SQL選擇一行並存儲在一個SQL變量中
我對你們的問題是:
我可以選擇整個行並將其存儲在一個變量?
我知道我可以這樣做:
declare @someInteger int
select @someInteger = (select someintfield from sometable where somecondition)
但我可以從sometable
選擇整個行並將其存儲在一個變量?
您可以選擇字段到多個變量:
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 ...
然後,您可以從喜歡你的表變量選擇一個常規的桌子。
您可以創建一個表格模式相匹配的表變量,並存儲在它的單行:
declare @myrow table(field0 int,field1 varchar(255))
insert into @myrow
select field0,field1 from mytable where field0=1
請參閱/通過:
MSSQL Select statement with incremental integer column... not from a table
SELECT ROW_NUMBER() OVER(ORDER BY Column1, Column2) AS 'rownumber',*
FROM YourTable
我猜我可以這樣做......這可能是在這種情況下最好的解決方案...我基本上是試圖清理我的殘酷的SQL代碼,這將使它更清潔,現在我基本上有相同的代碼在else塊中的if塊......這將至少擺脫一些重複的代碼... – EJC 2010-09-22 21:23:22
@EJC:「現在我基本上在else塊中的if塊上有相同的代碼」 - note從性能的角度來看,你目前的方法可能會更好,但顯然你需要測試。當然是 – onedaywhen 2010-09-23 08:53:55
! :) 感謝您的建議 – EJC 2010-09-23 12:59:57