2009-07-17 5 views
1

のような二つの異なる属の結果を参加:SQL Server 2005は、私はファッションを以下に同じ構造 を返す二つの異なるストアドプロシージャの結果を参加したい

EXEC StoreProcedure1 p1 
    UNION 
    EXEC StoreProcedure2 p2 

私はそれが不可能であると認識、sombodyはエレガント提案することができます代替?

私は知っている私は一時テーブルを使用する必要がありますか? SQL Serverでの

SELECT * FROM dbo.MyFunction1(p1) 
UNION 
SELECT * FROM dbo.MyFunction2(p2) 

答えて

3

create table #temp (
    col1 type, 
    col1 type, 
    ... 
) 

insert into #temp 
exec sproc1 
go 
insert into #temp 
exec sproc2 
go 

select * from #temp 
go 

drop table #temp 

しかし、私の好みは、どちらのストアドプロシージャが実行されているクエリを決定し、その後同じクエリを実行してそれらを結合するクエリをゼロから作成することですあなた。

+0

ありがとうございますが、私はストアプロシージャを使用したい – krul

+2

あなたはまだそうです:すべての関数はストアドプロシージャを呼び出して結果を返します。これは実際にこれを行うより良い方法です。 –

+0

興味深いことに、 – krul

2

あなたが次のことを行うことができます:あなたが代わりにテーブルを返してみませんかユーザー定義関数にストアドプロシージャを変換することができ

おかげ

+0

が私の予想どおりに再考させていただきます。ありがとうございました。周囲に道があれば私はさまよっていました。 – krul

+0

このために一時テーブルを使用することでパフォーマンスが低下することに注意してください。あなたが小さなデータを扱っているなら、気づかないかもしれませんが、それ以外の場合は、tempdbに書き込むことで打撃を受けます – AdaTheDev

関連する問題