Tôi không khuyên bạn nên làm điều này vì mỗi khi nó được tạo, một kế hoạch thực thi mới phải được tính toán, nhưng CÓ, nó chắc chắn có thể được thực hiện (Mọi thứ đều có thể, nhưng không phải lúc nào cũng được khuyến khích).
Đây là một ví dụ:
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
Bạn sẽ nhận được cảnh báo
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.
Bạn có thể bỏ qua cảnh báo này bằng cách sử dụng EXEC ('sp_helloworld2') ở trên.
Nhưng nếu bạn gọi EXEC [sp_helloworld], bạn sẽ nhận được kết quả
Hello World
Hello World 2