2011-06-30 19 views
0

複数のテーブルの値を持つデータセットを入力する必要があります。SQL INSERT @tableVar SELECT ...挿入のみです

ステートメントを実行するstored procedureを作成しました。

SELECTには共通の部分があります。

これらの共通部分の結果をキャッシュすることにしました。

今、テーブル変数に結果を出力できるSELECT構造が必要です。

INSERT @tableVar SELECT ...はデータのみを挿入しますが、データは選択しません。

私の意図はSELECT * OUTPUT SELECTED.* INTO @tableVar FROM ...

のようなものであるが、このような操作を行うことが可能ですか?

+0

を、これが唯一のSQLに関係しているとして、C#と.NETのタグを削除してください。 – Jethro

+0

removed ........ – Lu4

答えて

3
INSERT @tableVar 
    OUTPUT INSERTED.* 
    SELECT * 
    FROM [...] 
+0

+1、SQL Server 2005+には、単一のINSERTステートメントを2つのテーブル(元の挿入+出力挿入)に挿入し、1つのステートメントから同時にすべての結果セットを返すことを許可する 'OUTPUT'節があります。 –

+0

これは非常に面白い解決策です。selectはOUTPUT INSERTED。*のようなネストされた挿入を許可しません。SELECT FROM(INSERT ... OUTPUT INSERTED。* ...) – Lu4

0

あなたは最初の挿入後の選択を行うことができます。

INSERT @probes 
SELECT P.ID, P.ContainerID, P.EstimateID 
FROM Probes AS P 
WHERE P.LockedBy = @lockedBy 

SELECT * FROM @probes 

SELECT C.ID, C.Data 
FROM Containers AS C 
INNER JOIN 
(
    SELECT DISTINCT P.ContainerID 
    FROM @probes AS P 
) AS X ON C.ID = X.ContainerID 

SELECT E.ID, E.ObjectiveID, E.[Time] 
FROM Estimates AS E 
INNER JOIN 
(
    SELECT DISTINCT P.EstimateID 
    FROM @probes AS P 
) AS X ON X.EstimateID = E.ID 
+0

はい、私は知っていますが、1回の操作で行うことは可能ですか? – Lu4

関連する問題