2012-02-07 11 views
10

Próbuję zrzucić procedury przechowywanej, jeśli istnieje, a następnie utwórz go, wykonując w ten sposób:Dlaczego instrukcja CREATE PROCEDURE nie działa, gdy używam jej z instrukcją IF tutaj?

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


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

IF @parameter1 = 1 
    BEGIN 
      .... 

Ale twierdzi, że:

„CREATE procedura musi być jedynym oświadczenie w wsad "

Pytanie: Jak mogę naprawić mój skrypt, aby to rozwiązać?

Odpowiedz

17

Musisz umieścić go na końcu pierwszej partii logicznej.

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 
      .. 
+0

Pracowałem! Ale dlaczego konieczne jest zakończenie? Mam na myśli logikę kryjącą się za – pencilCake

+0

@pencilCake Ponieważ instrukcja "CREATE PROCEDURE" musi być pierwszą instrukcją (i tylko jedną) w pakiecie. –

+0

Zastanawiam się, dlaczego MS stworzyło tę ZASADĘ ... Przeciw czemu? .. – pencilCake

Powiązane problemy