2009-07-09 4 views
1

XML形式で結果を作成するSQL SELECTステートメントがあります。私は元のSELECTステートメントから行が選択されるたびに別のテーブル(挿入を介してログ)に挿入したいと思います。 INSERT文をSELECT文の中に含めるにはどうしますか?SQL:SELECTステートメント内でのINSERTの使用

SELECT  cs_ads_StoreLocations.LocationGUID, *Bunch of Selects AS Distance 
FROM   *Bunch of Inter Joins* 

WHERE  *Bunch of conditions* 
ORDER BY *You don't want to know* 
FOR XML AUTO 

INSERT INTO cs_ads_StoreLog (LocationGUID) VALUES (*DISTINCT cs_ads_StoreLocations.LocationGUID from select statement above*) 

これは、SELECTステートメントの外側でINSERTを持つサ​​ンプルコードの一部です。私はそれがSELECTステートメントまたはINSERTを実行する別の方法の中にあるものが必要です

このサンプルコードはストアドプロシージャの一部です

+0

エリックの答えは私が示唆したことですが、あなたはSELECT内にINSERTを置くことに強く思っています - これの背後にある理由は何ですか? また、SELECTによって返される行ごとにいくつかのアクションを実行できると考えているようです。これは、セットベースの処理であることを忘れないでください。SELECTの結果は、個々の行 –

答えて

0

恐らく動的SQLがこれを解決するでしょうか?例here。 あるいは、テーブルの変数varに値を格納し、その値を挿入することもできます。

+0

サンプルコードは、ストアドプロシージャの一部です。私はそれにINSERTを含める方法を見つけることを試みているだけです。 – user135356

+0

動的SQLおよびテーブル変数は、SPで使用できます。 FYI。 :) – javamonkey79

1

INSERTは、実際に入力としてSELECTを受け入れます。このコマンドを使うことができます(SELECTはサブクエリとしてコピーされていますが、おそらくサブクエリを使わずに別のGUIDを返すようにリファクタリングすることもできますが、モンスター全体を見る必要があります)。 (パフォーマンスはあまりヒットを心配する必要はありませんので、それがキャッシュされます)

insert into (cs_ads_StoreLog) 
select distinct 
    a.LocationGUID 
from 
    (SELECT 
     cs_ads_StoreLocations.LocationGUID, *Bunch of Selects AS Distance 
    FROM 
     *Bunch of Inter Joins* 
    WHERE 
     *Bunch of conditions* 
    ORDER BY 
     *You don't want to know* 
    ) a 

次に、あなただけが持っているSELECTを返すことができます。

関連する問題