2011-08-02 15 views
0

これはおそらくほとんどの人にとっては些細なことですが、非常に長い(6か月間のみ)ストアド・プロシージャを作成していません。私はINSERTクエリに使用されている列の1つに基づいて@testid変数を設定できるようにしたいと思います。これどうやってするの?INSERT問合せFROM句の結果列のSQL変数を格納します

DECLARE @testid INT; 

INSERT INTO [exporttestresultreport] (
    [testid], 
    [othercolumn] 
) 
SELECT 
    [testid], -- <======= how can I set my variable based on this column? 
    [othercolumn] 
FROM 
    [exporttestresultreport] e 
WHERE 
    [exporttestresultreportid] = @exporttestresultreportid 

答えて

3
DECLARE @testid INT; 

DECLARE @test TABLE (testid int); 

INSERT INTO [exporttestresultreport] (
    [testid], 
    [othercolumn] 
) 
OUTPUT INSERTED.testID INTO @test 
SELECT 
    [testid], -- <======= how can I set my variable based on this column? 
    [othercolumn] 
FROM 
    [exporttestresultreport] e 
WHERE 
    [exporttestresultreportid] = @exporttestresultreportid; 

SELECT @testid = testid FROM @test; 

アンINSERT..SELECT ...それはスカラー変数に値を代入できるようにsemseことはありませんので、本質的に複数行である:値を使用すべきか行?

+0

@ MacGyver:この*古い*回答を受け入れない理由は何ですか? – gbn

+0

構文を訂正すれば、それを答えとしてマークします。だから私は他の人を選んだのです。これらのクエリをどのように組み合わせることができますか? – MacGyver

+0

@Mr。 MacGyver:どのようなエラーがありましたか? – gbn

1
DECLARE @testid INT; 

DECLARE @t TABLE(t INT); 

INSERT exporttestresultreport 
(
    testid, othercolumn 
) 
OUTPUT INSERTED.testid INTO @t 
SELECT testid, othercolumn 
FROM 
    [exporttestresultreport] e 
WHERE 
    [exporttestresultreportid] = @exporttestresultreportid; 

SELECT @testid = t FROM @t; 

-- not sure what you want to do if there are multiple rows in the insert 
+0

同じOUTPUT行に複数の一時テーブルを追加する方法を知っていますか? – MacGyver

+1

もちろん、@tに列を追加して、INSERTED.othercolumnをOUTPUT句に追加することもできます。しかし、すべての列を変数に出力することを意図しているのであれば、 'SELECT @ testID = testid、@othercolumn = othercolumn FROM ...; INSERT exporttestresultport SELECT @testid、@othercolumn; '? –

関連する問題