如何在SQL Server中存储SELECT中的多个值?

时间:2012-01-03 20:02:33

标签: sql-server sql-server-2008 stored-procedures

有没有办法使用SQL Server将SELECT查询的结果存储在存储过程中?

在下面的示例中,我想从选择查询中存储“one”和“two”。

示例:

DECLARE @Values ???
SET @Values = (SELECT one, two FROM dummyTable)

3 个答案:

答案 0 :(得分:5)

您可以使用表变量:

DECLARE @Table TABLE (one varchar(100), two varchar(100)

INSERT INTO @TABLE
SELECT one, two from dummytable

与其他变量一样,这不能从proc范围之外访问。

对于大量行也不好,因为优化器总是为执行计划假设一行。

答案 1 :(得分:4)

SELECT @Value1 = One, @Value2 = two FROM dummyTable;

SQL Server中没有任何数组。

答案 2 :(得分:2)

如果您的查询只返回一行:

DECLARE @v1 int -- or whatever
DECLARE @v2 int
SELECT @v1 = one, @v2 = two
  FROM dummyTable
  WHERE id = 1 

如果您的查询返回多行,您可以使用SELECT INTO来避免声明表变量:

SELECT one, two
  FROM dummyTable
  INTO #temp
SELECT * FROM #temp
DROP TABLE #temp