Почему инструкция CREATE PROCEDURE терпит неудачу, когда я использую ее с инструкцией IF здесь?
Я пытаюсь DROP хранимую процедуру, если она существует, а затем СОЗДАТЬ ее, делая это следующим образом:
IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
DROP PROCEDURE dbo.myStoredProc
CREATE PROCEDURE [dbo].[myStoredProc]
(
@parameter1 BIT
) AS
IF @parameter1 = 1
BEGIN
....
Но он жалуется, что:
"CREATE PROCEDURE должен быть единственным выражением в партии"
Вопрос: Как я могу исправить мой script, чтобы преодолеть это?
Ответы
Ответ 1
Вам нужно положить go
в конце вашей первой логической партии.
IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
DROP PROCEDURE dbo.myStoredProc
go -- you need to add the batch-terminator 'go'
CREATE PROCEDURE [dbo].[myStoredProc]
(
@parameter1 BIT
) AS
IF @parameter1 = 1
BEGIN
..
Ответ 2
Добавление GO после того, как оператор IF
показывает, что это конец вашей первой серии запросов.
Подробнее здесь:
http://msdn.microsoft.com/en-us/library/ms188037.aspx
IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
DROP PROCEDURE dbo.myStoredProc
GO
Это предотвратит появление вашей ошибки.