SQL Server-Skript: ALTER PROCEDURE - Ausführung mehrerer ALTER PROCEDURE-Anweisung in einem Skript, ohne zu wählen jedes ALTER-eine nach der anderen

Ich weiß, das ist kein großes Problem, aber es juckt mich trotzdem.

  1. Ich habe einen SQL Server 2005-script zum erstellen neuer Daten-Tabellen, Einschränkungen, änderung einiger Tabellen hinzufügen von Spalten, änderung der Verfahren zu nehmen Sie die änderungen an den Tabellen berücksichtigt, etc.
  2. Alles läuft wunderbar, bis das Skript auf mein ALTER PROCEDURE-Anweisungen.
  3. Die Fehlermeldung ist wie folgt:

"Msg 156, Level 15, Status 1, Prozedur
cpromo_Get_ConsultDetails_Promotionban,
Linie 59 Falsche syntax in der Nähe des
Stichwort 'PROZEDUR'.

Hier ist ein Beispiel mein script:

ALTER PROCEDURE [dbo].[cpromo_Get_ConsultDetails_PromotionBan] 
(
 @idPromoBan int, 
 @uid int 
)
AS
begin
 set nocount on;

 /* 1-  detail de la promo */
 SELECT p.[nopromo], p.[StartDate], p.[EndDate], p.[DateText]
 FROM [cpromo_PromotionBanniere] as pb
 INNER JOIN [cpromo_Promotions] as p ON p.[idPromo] = pb.[idPromo]
 WHERE (pb.[idPromoBan] = @idPromoBan)

 /* 2 - cartes de la promo */
 SELECT pis.[idCardText], ct.[nom], ct.[descr], ct.[prix], ct.[prixCoupon], ct.[qtyItem], i.[Impact]
 FROM [cpromo_PromotionsItems] as pis
 INNER JOIN [cpromo_Impacts] as i ON i.[idImpact] = pis.[idImpact] 
 INNER JOIN [cpromo_CardText] as ct ON ct.[idCardText] = pis.[idCardText]
 WHERE (pis.[idPromoBan] = @idPromoBan)
 ORDER BY i.[iorder], ct.[nom];

 /* 3 - pvedettes opti */
 SELECT m.[idCardText], m.[qtyCardL], m.[qtyCardM], m.[qtyCardMG], m.[qtyCardS],
     ISNULL(m.[qtyCardMini], 0) as qtyCardMini,
     ISNULL(m.[qtyCardMiniPTJ], 0) as qtyCardMiniPTJ
 FROM [cpromo_MEMCards] as m
 INNER JOIN [cpromo_CardText] as ct ON ct.[idCardText] = m.[idCardText]
 WHERE (m.[idPromoBan] = @idPromoBan)
 ORDER BY ct.[nom];


 /* 4 - cart */
 SELECT [idCartEl], [idCardText], [qtyL], [qtyM], [qtyMG], [qtyS],
     ISNULL([qtyMini], 0) as qtyMini,
     ISNULL([qtyMiniPTJ], 0) as qtyMiniPTJ
 FROM [cpromo_UserCarts]
 WHERE ([uid] = @uid AND [idPromoBan] = @idPromoBan);
end


ALTER PROCEDURE [dbo].[cpromo_Get_CartItems_ByPromotionBan] 
(
 @uid int,
 @idPromoBan int 
)
AS
begin
 set nocount on;

 SELECT ct.nom, ct.descr, p.DateText, ct.prix, ct.prixCoupon, ct.qtyItem,
           uc.qtyL, uc.qtyM, uc.qtyMG, uc.qtyS,
     isnull(uc.qtyMini, 0) as qtyMini,
     isnull(uc.qtyMiniPTJ, 0) as qtyMiniPTJ, 3 as qteLimite
 FROM cpromo_UserCarts as uc
 INNER JOIN cpromo_CardText as ct ON ct.idCardText = uc.idCardText 
 INNER JOIN cpromo_PromotionBanniere as pb ON pb.idPromoBan = uc.idPromoBan 
 INNER JOIN cpromo_Promotions  as p ON p.idPromo = pb.idPromo
 WHERE (uc.uid = @uid) AND (uc.idPromoBan = @idPromoBan);
end

Den Fehler-Punkte in Richtung der ersten 'end' Schlüsselwort begegnet werden, wenn doppelt geklickt. Was ich nicht verstehe, ist wenn Sie eine ALTER-Anweisung nach der anderen, es läuft einfach gut und glatt! Wenn ich versuche, Sie laufen alle durch drücken der Taste [F5] keine Auswahl, es gibt mir die Fehlermeldung.

Versuchte ich Sie zum einbetten des ALTER-Anweisungen in ein anderes BEGIN...END, aber kein Glück, es sagt, dass es ein syntax Fehler in der Nähe des Schlüsselwortes ÄNDERN...

EDIT: Kann es sein, weil ich kommentieren die änderungen, die ausgeführt werden, nachdem der begin-Anweisung?

ALTER PROCEDURE [dbo].[cpromo_Get_ConsultDetails_PromotionBan] 
    (
     @idPromoBan int, 
     @uid int 
    )
    AS
    begin
------------------
-- Added column to take table changes into account blah blah blah...
------------------
     set nocount on;

     /* 1-  detail de la promo */
     SELECT p.[nopromo], p.[StartDate], p.[EndDate], p.[DateText]
     FROM [cpromo_PromotionBanniere] as pb
     INNER JOIN [cpromo_Promotions] as p ON p.[idPromo] = pb.[idPromo]
     WHERE (pb.[idPromoBan] = @idPromoBan)

     /* 2 - cartes de la promo */
     SELECT pis.[idCardText], ct.[nom], ct.[descr], ct.[prix], ct.[prixCoupon], ct.[qtyItem], i.[Impact]
     FROM [cpromo_PromotionsItems] as pis
     INNER JOIN [cpromo_Impacts] as i ON i.[idImpact] = pis.[idImpact] 
     INNER JOIN [cpromo_CardText] as ct ON ct.[idCardText] = pis.[idCardText]
     WHERE (pis.[idPromoBan] = @idPromoBan)
     ORDER BY i.[iorder], ct.[nom];

     /* 3 - pvedettes opti */
     SELECT m.[idCardText], m.[qtyCardL], m.[qtyCardM], m.[qtyCardMG], m.[qtyCardS],
         ISNULL(m.[qtyCardMini], 0) as qtyCardMini,
         ISNULL(m.[qtyCardMiniPTJ], 0) as qtyCardMiniPTJ
     FROM [cpromo_MEMCards] as m
     INNER JOIN [cpromo_CardText] as ct ON ct.[idCardText] = m.[idCardText]
     WHERE (m.[idPromoBan] = @idPromoBan)
     ORDER BY ct.[nom];


     /* 4 - cart */
     SELECT [idCartEl], [idCardText], [qtyL], [qtyM], [qtyMG], [qtyS],
         ISNULL([qtyMini], 0) as qtyMini,
         ISNULL([qtyMiniPTJ], 0) as qtyMiniPTJ
     FROM [cpromo_UserCarts]
     WHERE ([uid] = @uid AND [idPromoBan] = @idPromoBan);
    end

Danke für jede Hilfe oder jeden Hinweis.

Die Empfehlungen, die ich eingefügt "GEHEN" nach jedem einzelnen ALTER PROCEDURE begin...end ist, dann zeigt eine andere syntax Fehler in der Nähe von "ALTER".
Ich habe versucht, das entfernen Sie alle Parameter der Klammer wie vorgeschlagen, von einem anderen Programmierer hier (die, die ich bedauere, nicht ta hatte das mal zu merken sein name), aber immer noch die Fehlermeldung Msg 156, Level 15, Status 1, Prozedur cpromo_Get_ConsultDetails_Promotionban, Linie 59 Falsche syntax bei das Schlüsselwort 'ALTER'. Es ist Punkte die mich beim ersten "end" - Schlüsselwort ein, wenn ich ein Doppelklick darauf.
Soll ich erwägen, es zu sagen, dass habe ich kopiert und eingefügt die generierte ALTER PROCEDURE-Skript für jedes der Verfahren eine unter dem anderen?
Ich weiß, es ist lang und nicht sehr lustig zu Lesen. Tut mir Leid. Dieses Projekt ist auf einer client-Website, wo ich nicht viel Unterstützung von der internen Programmierer-team.
Gut, es gelang mir lösen meine syntax-Fehler. Ich danke Euch allen für die Antwort ich werde Sie als die richtigen Lösungen. Es ist alles deine Antwort.

InformationsquelleAutor Will Marcouiller | 2009-09-16

Schreibe einen Kommentar