Jag rekommenderar inte att du gör detta eftersom varje gång det skapas måste en ny genomförandeplan beräknas, men JA, det kan definitivt göras (allt är möjligt, men inte alltid rekommenderat).
Här är ett exempel:
CREATE PROC [dbo].[sp_helloworld]
AS
BEGIN
SELECT 'Hello World'
DECLARE @sSQL VARCHAR(1000)
SET @sSQL = 'CREATE PROC [dbo].[sp_helloworld2]
AS
BEGIN
SELECT ''Hello World 2''
END'
EXEC (@sSQL)
EXEC [sp_helloworld2];
DROP PROC [sp_helloworld2];
END
Du kommer att få varningen
The module 'sp_helloworld' depends on the missing object 'sp_helloworld2'.
The module will still be created; however, it cannot run successfully until
the object exists.
Du kan kringgå denna varning genom att använda EXEC('sp_helloworld2') ovan.
Men om du ringer EXEC [sp_helloworld] får du resultaten
Hello World
Hello World 2