所以,我正在写这个存储过程,我真的很厌烦SQL。
我的问题是:
我可以选择整行并将其存储在变量中吗?
我知道我可以这样做:
declare @someInteger int
select @someInteger = (select someintfield from sometable where somecondition)
但是我可以从sometable
中选择整行并将其存储在变量中吗?
答案 0 :(得分:29)
您可以将字段选择为多个变量:
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 ...
然后,您可以从常规表中选择表变量。
答案 1 :(得分:6)
您可以创建一个与您的表架构匹配的表变量,并将单行存储在其中:
declare @myrow table(field0 int,field1 varchar(255))
insert into @myrow
select field0,field1 from mytable where field0=1
答案 2 :(得分:0)
请参阅/通过:
MSSQL Select statement with incremental integer column... not from a table
SELECT ROW_NUMBER() OVER( ORDER BY Column1, Column2 ) AS 'rownumber',*
FROM YourTable