如何在SQL Server 2008中创建一个存储过程嵌套另一个存储过程

10

我想创建一个存储过程,以便在另一个存储过程中使用,类似于下面所示的方式。这是否可能?

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
这似乎是一个奇怪的要求 - 你这样做的动机是什么? - Will A
回答你的问题,虽然已经过了很多年,但我有同样的需求,需要在存储过程中创建另一个存储过程。原因是我使用自定义存储过程跟踪我的tempdb使用情况,该存储过程使用fileproperty关键字,只能在当前数据库上下文中使用。我将在tempdb中创建一个子存储过程,以便可以获得准确的结果,然后检查存储过程是否存在。由于tempdb每次都会重新创建,所以我需要保留存储过程创建代码,但不必担心每次重新创建它。 - Josh Simar
1
想要这样做的原因是:如果您想为此过程临时创建一个存储过程、函数、类型等,并希望在过程完成之前将它们全部删除。 - Ellis
1个回答

13

你可以使用exec函数:

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

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

2
当然,如果不删除该过程(或仅在过程不存在时运行内部创建),第二次运行将出现错误。 - Damien_The_Unbeliever
2
如果您在运行时创建了一个存储过程,使用完成后应该将其删除。 - kheya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接