Не препоръчвам да правите това, тъй като всеки път, когато се създава, трябва да се изчислява нов план за изпълнение, но ДА, определено може да се направи (Всичко е възможно, но не винаги се препоръчва).
Ето един пример:
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
Ще получите предупреждението
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.
Можете да заобиколите това предупреждение, като използвате EXEC('sp_helloworld2') по-горе.
Но ако извикате EXEC [sp_helloworld], ще получите резултатите
Hello World
Hello World 2