2011-03-07 4 views
0

Peut-être que je ne reçois pas les paramètres SQL correctement, mais cela ne fonctionne pas pour moi. Est-ce que je fais quelque chose de mal? Je reçois une syntaxe incorrecte près du mot-clé 'AS' lorsque j'essaie de sauvegarder cette procédure stockée.Erreur de procédure stockée SQL

ALTER PROCEDURE MyProc 
AS 
DECLARE @CID int 

DELETE FROM Contacts 
WHERE [email protected] 

RETURN 
+0

Voulez-vous dire passer '@CID 'en tant que paramètre d'entrée? Si oui, alors la réponse d'Avitus devrait fonctionner! – Vishal

+1

Je suppose que votre SQL n'est pas comme posté mais a plutôt un nom autre que MyProc: soit vous avez utilisé un nom qui est un mot réservé ou vous avez omis le nom de proc entièrement. – onedaywhen

Répondre

3

Vous devriez essayer -

ALTER PROCEDURE MyProc 
    @CID int 
AS 
BEGIN 

DELETE FROM Contacts 
WHERE [email protected] 

RETURN 

END 
GO 
+1

non, commencer ... fin n'est pas nécessaire. De plus, RETURN n'est pas nécessaire. – splattne

+0

@splattne - J'ai inclus le retour juste parce que OP l'a dans sa question. Ce n'est pas redondant dans ce cas. –

+0

@marc - Ce n'est pas obligatoire. Tout jusqu'à "GO" est inclus dans la définition même après un 'BEGIN' ...' END' –

1

Vous devez changer pour être:

ALTER PROCEDURE MyProc 
    @CID int 
AS 

Begin 

DELETE FROM Contacts 
WHERE [email protected] 

end 

GO 
+0

Il semble que l'op doit changer sa déclaration, mais néanmoins, il ne devrait pas avoir d'erreur. – Lamak

+0

vous avez raison en ce que le proc ne devrait pas erreur mais il ne fonctionne pas comme prévu puisque @CID n'est pas défini à une valeur dans le problème. Je crois qu'il essaie de faire fonctionner le paramètre correctement. – Avitus

1

Il vous manque un nom de procédure

ALTER PROCEDURE sp_YOURSPROC 

Edit:

Vous avez une procédure de ce nom? Sinon, vous pourriez avoir besoin de CREATE plutôt que ALTER. Mais cela vous donnerait une erreur invalid object name.

Est-ce que @CID doit être un paramètre? sinon cela semble inutile. Mais même si c'est le cas, alors vous n'obtiendrez aucune erreur, cela ne fonctionnerait pas correctement.

ALTER PROCEDURE MyProc 
    @CID INT 
AS 
    DELETE FROM Contacts 
    WHERE [email protected] 
+0

Copier et coller typo wasnt le problème réel – atrljoe

+0

oui j'ai déjà une procédure stockée dans cet exemple MyProc – atrljoe

0

Vous avez déclaré @CID à l'intérieur la procédure. Il doit être déclaré un paramètre si:

ALTER PROCEDURE MyProc 

    @CID int -- it's a parameter 

AS 

    DELETE 
    FROM Contacts 
    WHERE ContactID = @CID 

Si le procudure stocké n'existe pas encore dans la base, vous devrez utiliser CREATE PROCEDURE:

CREATE PROCEDURE MyProc 

    @CID int -- it's a parameter 

AS 

    DELETE 
    FROM Contacts 
    WHERE ContactID = @CID