Почему оператор CREATE PROCEDURE терпит неудачу, когда я использую его с оператором IF здесь? - PullRequest
10 голосов
/ 07 февраля 2012

Я пытаюсь сбросить хранимую процедуру, если она существует, а затем СОЗДАТЬ ее следующим образом:

IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
    DROP PROCEDURE dbo.myStoredProc


CREATE PROCEDURE [dbo].[myStoredProc]
(
    @parameter1 BIT
) AS

IF @parameter1 = 1
    BEGIN
             ....

Но он жалуется, что:

"СОЗДАТЬ ПРОЦЕДУРУ долженбыть единственным оператором в пакете "

Вопрос: Как я могу исправить свой сценарий, чтобы преодолеть это?

Ответы [ 2 ]

17 голосов
/ 07 февраля 2012

Вам нужно поставить 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
             ..
8 голосов
/ 07 февраля 2012

Добавление GO после того, как ваш оператор IF показывает, что это конец вашего первого пакета запроса.

Подробнее читайте здесь:

http://msdn.microsoft.com/en-us/library/ms188037.aspx

IF OBJECT_ID('[dbo].[myStoredProc]') IS not NULL
    DROP PROCEDURE dbo.myStoredProc
GO

Это предотвратит возникновение вашей ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...