2012-01-03 6 views
3

SQL Serverを使用しているストアドプロシージャにSELECTクエリの結果を格納する方法はありますか?複数の値をSELECTからSQL Serverに格納する方法はありますか?

以下の例では、選択クエリから「1」と「2」の両方を保存したいと考えています。

例:

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

あなたがつかむことを望みます単一の行または複数の行からの複数の値? –

+0

派生テーブル? http://www.4guysfromrolla.com/webtech/112098-1.shtml – Tim

答えて

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

SQL Serverには配列がありません。

+0

これは非常に便利なテクニックです – chobo

5

あなたは、このためにテーブル変数を使用することができます。他の変数と同様に

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

INSERT INTO @TABLE 
SELECT one, two from dummytable 

が、これはPROCの範囲外からアクセスできなくなります。

オプティマイザは常に実行計画に対して単一の行を想定しているため、多数の行には適していません。

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