2010-10-29 3 views
2

J'ai une procédure stockée que je ne veux pas modifier. C'est plutôt vaste et complexe, et je ne veux pas ajouter plus de confusion à cela.MS SQL: Utiliser un jeu de résultats de procédures stockées dans une autre requête?

Donc ce que je voudrais faire est une autre procédure de magasin qui fait appel à la grande, et utilise le jeu de résultats pour effectuer d'autres sélections/rejoint etc.

+0

Le problème est maintenant que je reçois une erreur imbriquée ... – Nick

Répondre

1

Vous pouvez créer une fonction définie par l'utilisateur qui appelle la procédure stockée que vous avez et l'utiliser dans d'autres requêtes.

+0

Le problème maintenant est que je reçois une erreur imbriquée ... – Nick

+0

@Nick - Quelle erreur obtenez-vous? – Giorgi

2

Vous pouvez insérer le jeu de résultats de la procédure dans le tableau. Comme ceci:

create procedure test 
as 
begin 

select 1 

end 

go 

declare @t table 
(
id int 
) 

insert into @t 
exec test 

select * from @t -- returns one row 
+0

Je pensais que je devrais faire cela, mais je pensais qu'il pourrait y avoir une autre façon. Merci pour la réponse de chronométrage. – Nick

+0

Je ne pense pas qu'il existe un autre moyen de capturer l'ensemble de résultats de la procédure. –

+0

Le problème est maintenant que j'obtiens une erreur imbriquée ... – Nick

2

Vous pouvez utiliser une fonction définie par l'utilisateur à la place:

create function table_func 
() 
returns table 
as 
    return 
    (
      select top 10 * 
      from master..msreplication_options 
     ) 

Ensuite, pour obtenir votre jeu de résultats

select * from table_func() 

Si vous avez besoin d'appeler cela comme proc stocké à d'autres endroits, créer un proc stocké qui encapsule la fonction définie par l'utilisateur:

create procedure test_proc 
as 
    select * from test_func(); 
Questions connexes