Stored procedures 使用带参数的存储过程删除行

Stored procedures 使用带参数的存储过程删除行,stored-procedures,sql-server-2008-r2,Stored Procedures,Sql Server 2008 R2,我使用的是SQLServer2008R2,我想创建一个存储过程,使用参数(id)从两个表中删除 这是存储过程: CREATE PROCEDURE [dbo].[sp_deleteDecision] @ID int AS DELETE FROM [dbo].[tblDecisionInvolvement] as di WHERE di.DecisionId = @ID DELETE FROM [dbo].[tblDecision] as d WHERE d.Id =@ID GO 这是我在尝试

我使用的是SQLServer2008R2,我想创建一个存储过程,使用参数(id)从两个表中删除

这是存储过程:

CREATE PROCEDURE [dbo].[sp_deleteDecision]
@ID int
AS

DELETE FROM [dbo].[tblDecisionInvolvement] as di
WHERE di.DecisionId = @ID
DELETE FROM [dbo].[tblDecision] as d
WHERE d.Id =@ID

GO
这是我在尝试创建时遇到的错误:

Msg 156,15级,状态1,程序sp_deleteDecision,第6行
关键字“as”附近的语法不正确。
Msg 156,15级,状态1,程序sp_deleteDecision,第8行
关键字“as”附近的语法不正确

请注意,将
删除从
更改为

SELECT * FROM 
它起作用了

甚至可以使用参数删除某些内容吗


Ty.

您不允许在
DELETE
语句的该部分引入别名-在这种情况下,您也不需要别名:

USE ChessDb01
GO
CREATE PROCEDURE [dbo].[sp_deleteDecision]
@ID int

AS

DELETE FROM [dbo].[tblDecisionInvolvement]
WHERE DecisionId = @ID
DELETE FROM [dbo].[tblDecision]
WHERE Id =@ID

GO
对于更复杂的查询,您可能希望使用别名,但请注意(令人困惑的是),将有两个
FROM
子句,并且您只能在第二个子句中引入别名:

DELETE FROM di
FROM [dbo].[tblDecisionInvolvement] di
            inner join
      AnotherTable tab
           on
              di.Column = tab.Column2
WHERE tab.Column99 = @Value

问题是alias,仅当您使用联接时才使用alias…您在哪里看到以这种方式删除时将
用作
的语法?遇到此错误时,是否查看了?否,我正在查看存储过程页面。我没有意识到添加别名是导致问题的原因。在第二个示例中,我通常省略了中的第一个
。感谢您的快速回复。我删除了别名,现在可以用了。我感到宽慰;非常感谢。别名可以在Delete中使用,但它会使它过于复杂。示例从表中删除一个where列=@id