2011-06-23 60 views
5

我想创建一个存储过程在存储过程中使用,如下所示。这可能吗?如何在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

这似乎链接才可一个奇怪的要求 - 什么是你这样做的动机是什么? –

+0

回答你的问题虽然这是相当多的几年后,我有同样的需要在存储过程中创建一个存储过程,推理是我使用自定义存储过程跟踪我的tempdb使用情况,使用fileproperty关键字可以仅在当前数据库上下文中使用。我将在tempdb中创建一个子存储过程,这样我可以得到准确的结果,然后在存储过程存在的情况下检查。由于每次需要保存存储的proc创建代码时,tempdb都会重新创建,但不用担心每次都会重新创建它。 –

+0

想要做到这一点的一个理由是:如果你想暂时创建一个proc,函数,类型等等,只需要这个过程,并且希望在过程完成之前全部删除它们。 – Ellis

回答

8

您可以使用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

当然,这会在第二次运行时出错,除非您以后再次丢弃该程序(或者如果proc不存在,则只运行内部创建) –

+0

如果您在运行中创建存储过程,则应该放下一次使用它完成。 – kheya

相关问题