2011-06-23 5 views
5

Je souhaite créer une procédure stockée à utiliser dans une procédure stockée, comme illustré ci-dessous. Est-ce possible?Comment créer une procédure stockée dans une autre procédure stockée dans SQL Server 2008

CREATE procedure parentSP 
as 

--child SP definition. 
CREATE procedure childSP1 @inputArg varchar(50) 
as 
--do something. 
Go 

--call child sp within parentSP 
execute childSP1 '10' 

Go 
+2

Cela semble liks une exigence bizarre - quelle est votre motivation pour ce faire? –

+0

En réponse à votre question A quelques années plus tard, j'ai le même besoin de créer une procédure stockée dans une procédure stockée et le raisonnement est de suivre mon utilisation de tempdb en utilisant un proc stocké personnalisé qui utilise le mot-clé fileproperty seulement être utilisé dans le contexte de la base de données actuelle. Je vais créer un sous-programme stocké dans tempdb afin que je puisse obtenir des résultats précis et ensuite vérifier si le proc stocké existe. Depuis que tempdb est recréé chaque fois que je dois garder le code de création de proc stocké, je ne crains pas de le recréer à chaque fois. –

+0

Si vous souhaitez créer une procédure, une fonction, un type, etc. temporairement pour cette procédure, et que vous souhaitez les supprimer avant la fin de la procédure, vous pouvez le faire. – Ellis

Répondre

8

Vous pouvez utiliser exec:

CREATE procedure parentSP 
as 
exec('CREATE procedure childSP1 @inputArg varchar(50) 
as 
--do something.') 

--call child sp within parentSP 
execute childSP1 '10' 
Go 
+1

Bien sûr, cette erreur se produira la deuxième fois que vous l'exécutez, sauf si vous supprimez la procédure ultérieurement (ou exécutez uniquement la création interne si la proc n'existe pas) –

+0

si vous créez une procédure magasin à la volée, vous devez la supprimer fait en l'utilisant. – kheya

Questions connexes