Когда я пишу хранимую процедуру как drop / create, я получаю что-то вроде этого:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyStoredProcedure]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[MyStoredProcedure]
...
CREATE PROCEDURE [dbo].[MyStoredProcedure]
AS
BEGIN
...
END
Однако я хочу видеть следующее:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyStoredProcedure]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[MyStoredProcedure]
...
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyStoredProcedure]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[MyStoredProcedure] AS'
END
GO
ALTER PROCEDURE [dbo].[MyStoredProcedure]
AS
BEGIN
...
END
Есть ли способчтобы заставить SQL Server создавать сценарии таким образом, или мне нужно вручную редактировать определение процедуры после сценария?