2011-09-14 11 views
0

私は20カラム前後の結果セットを返すストアドプロシージャを持っています。私は、特定の列(ユーザー名)のすべての行を取得することにのみ関心があります。ここでストアドプロシージャの結果セットから特定のカラムをテンポラリテーブルに取得する

は私が持っているものです。

--create temp table 
CREATE TABLE #USERNAMES(
username   char(10) 
) 

--store results in a temp table 
INSERT INTO #USERNAMES 
exec dbo.getAccountInfo @subbed = 1 

これは、それが一時テーブルに結果セット全体を保存したいと見て動作しませんが、一時テーブルは、それが必要とするすべての列を定義していません。どのようにして、getAccountInfo結果セットのusername列を一時テーブル#USERNAMESに挿入するだけで、挿入を変更できますか?

答えて

2

ループバックリンクされたサーバーを作成する場合は(私の答えはこちら:Retrieve column definition for stored procedure result set参照)、OPENQUERYを使用できます。

INSERT #USERNAMES(username) 
    SELECT username 
    FROM OPENQUERY(loopback, 'EXEC dbname.dbo.getAccountInfo @subbed = 1;'); 

注:dbnameはここで重要です!

もちろん、ストアドプロシージャを複製することも、結果セットの形状を定義するオプションの引数を与えることもできます。

+0

ループバックリンクサーバーを作成できません。しかし、私はあなたが示唆したようにオプションのパラメータインジケータをprocに渡すときに、私が望むカラムだけを含む代替結果セットを作成しました。ありがとう。 – user234702

関連する問題