2009-07-17 8 views
1

Je veux rejoindre les résultats de deux procédures de magasins différents qui retourne même structure de façon suivante:SQL Server 2005 les résultats d'assemblage de deux différents sp comme

EXEC StoreProcedure1 p1 
    UNION 
    EXEC StoreProcedure2 p2 

Je me rends compte que n'est pas possible, peut sombody suggérer élégante alternative?

Je crois que je devrais utiliser la table temporaire?

Merci

Répondre

3

Vous pouvez convertir les procédures stockées dans les fonctions définies par l'utilisateur qui renvoient des tables au lieu et à faire:

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

merci, mais je veux utiliser la procédure de magasin – krul

+2

Vous seriez toujours: toutes les fonctions doivent faire est d'appeler les procédures stockées et renvoyer les résultats. C'est vraiment la meilleure façon de le faire. –

+0

Intéressant, je vais reconsidérer – krul

2

Dans SQL Server, vous pouvez effectuer les opérations suivantes:

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 

Cependant , ma préférence serait de déterminer quelles requêtes les deux procédures stockées sont en cours d'exécution et puis écrire une requête à partir de zéro effectuant les mêmes requêtes et les unissant toge ther.

+0

comme je m'y attendais, merci, je me promenais s'il y avait moyen de contourner cela – krul

+0

juste être conscient de la performance de l'utilisation des tables temporaires pour cela. Si vous traitez de petites données, vous ne le remarquerez probablement pas, mais sinon vous serez frappé en écrivant à tempdb – AdaTheDev

Questions connexes