SQL存储过程错误
也许我没有正确获取SQL参数,但这对我无效。难道我做错了什么?当我尝试保存此存储过程时,我在关键字'AS'附近收到错误的语法。SQL存储过程错误
ALTER PROCEDURE MyProc
AS
DECLARE @CID int
DELETE FROM Contacts
WHERE [email protected]
RETURN
你应该试试这个 -
ALTER PROCEDURE MyProc
@CID int
AS
BEGIN
DELETE FROM Contacts
WHERE [email protected]
RETURN
END
GO
不,不需要begin ... end。另外,不需要返回。 – splattne 2011-03-07 15:46:50
@splattne - 我只是因为OP在他的问题中包含了回报而包含了回报。在这种情况下,这不是多余的。 – 2011-03-07 15:49:03
@marc - 这不是必需的。直到'GO'都被包含在定义中,即使是在'BEGIN'之后......'END' – 2011-03-07 15:58:52
你需要改变它是:
ALTER PROCEDURE MyProc
@CID int
AS
Begin
DELETE FROM Contacts
WHERE [email protected]
end
GO
你缺少一个程序的名字
ALTER PROCEDURE sp_YOURSPROC
编辑:
你必须有一个同名的程序?如果不是,您可能需要CREATE
而不是ALTER
。但是这会给你一个invalid object name
错误。
@CID应该是一个参数吗?否则似乎没用。但即使是这样的情况下,你不会得到任何错误,它只是不会正确执行。
ALTER PROCEDURE MyProc
@CID INT
AS
DELETE FROM Contacts
WHERE [email protected]
您已经声明@CID 内的过程。应该声明的参数,但:
ALTER PROCEDURE MyProc
@CID int -- it's a parameter
AS
DELETE
FROM Contacts
WHERE ContactID = @CID
如果存储procudure不存在于数据库中还没有,你将不得不使用CREATE PROCEDURE
:
CREATE PROCEDURE MyProc
@CID int -- it's a parameter
AS
DELETE
FROM Contacts
WHERE ContactID = @CID
你的意思是通过'@CID '作为输入参数?如果是,那么Avitus的答案应该工作! – Vishal 2011-03-07 15:43:23
我猜你的SQL不是发布的,而是有一个不是'MyProc'的名称:要么你使用了一个保留字的名字,或者你完全省略了过程名。 – onedaywhen 2011-03-07 15:58:58