views:

53

answers:

2

So, I'm writing this Stored Proc and I really suck at SQL.

My Question to you guys is:

Can I select an entire row and store it in a variable?

I know I can do something like:

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

But can I select the entire row from sometable and store it in a variable?

+6  A: 

You can select the fields into multiple variables:

DECLARE @A int, @B int

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

Another, potentially better, approach would be to use a table variable:

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

You can then select from your table variable like a regular table.

Bennor McCarthy
yeah i guess i could do that... That might be the best solution in this case... I'm basically trying to clean up my atrocious SQL code and this would make it a little cleaner, right now I basically have the same code in the if block that's in the else block... this would at least get rid of some repeated code...
EJC
@EJC: "right now I basically have the same code in the if block that's in the else block" -- note your current approach may be the better from a performance point of view but obviously you'd need to test.
onedaywhen
of course! :) thanks for the advice
EJC
+3  A: 

You could create a table variable that matches your table schema and store the single row in it:

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