2010-10-07 7 views
3

J'ai une procédure stockée qui renvoie un Dataset(Table). Comment puis-je utiliser le résultat de cette procédure stockée dans une instruction SELECT?Utilisation du résultat d'une procédure stockée dans une instruction Select

je besoin de quelque chose comme ça

SELECT T1.* 
FROM Dummy T0 
    INNER JOIN 
    (EXEC [dbo].[SPGetResults] '900',300,'USD') T1 
    ON T1.aKey=T0.aKey 

J'utilise SQL Server 2005

+1

sélectionner dans une table temporaire: voir http://stackoverflow.com/questions/653714/how-to-select-into-temp-table-from-stored-procedure –

Répondre

1

Créer une fonction définie par l'utilisateur d'une valeur de table à la place.

0

Utilisez Insérez dans ... Exec et stockez le résultat dans une table temporaire ... Vous pouvez ensuite joindre la table Temp dans votre instruction select. Alternativement, comme suggéré précédemment, essayez de convertir le SP en une fonction Table valorisée.

Ce lien fournit beaucoup plus d'options pour vous ... http://www.sommarskog.se/share_data.html

2

Je suis d'accord avec Marcelo la plupart du temps, mais si vous définissez sur l'utilisation d'une procédure stockée ou votre procédure stockée ne tout ce qui touche les données, vous pouvez créer une table #temp avec la structure de la sortie de votre procédure stockée, puis faire quelque chose comme

INSERT INTO #temp 
EXEC [dbo].[SPGetResults] '900',300,'USD' 

puis effectuez vos jointures et sélectionne sur la table temporaire.

1

La réponse de Marcelo Cantos est la meilleure. également pour les requêtes distribuées, vous pouvez utiliser le script suivant:

USE [master] 

sp_configure 'Ad Hoc Distributed Queries', 1 
RECONFIGURE 

USE [YourDB] 

SELECT * 
FROM OPENROWSET('SQLNCLI', 'Server=YourServer ;Trusted_Connection=yes;', 
    'EXEC YourDB.YourSchema.YourSP ''YourParameters1'', YourParameters2') AS c 
INNER JOIN YourTableOrView ap ON ap.YourPK = c.YourFK 

http://www.kodyaz.com/articles/how-to-sql-select-from-stored-procedure-using-openquery-openrowset.aspx

0

Voici un exemple simple de la table Valeur fonction définie par l'utilisateur:

create function personSidsByLastName(@lastName varchar(20)) 
returns table 
as 
return 
select personSid from Person where lastName like @lastName 

select * from PersonAddress pa where pa.personSid in (select personSid from personSidsByLastName('ali')) 
Questions connexes