2011-06-23 104 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

相關問題