2

我正在使用 SQL Server 2008 R2,并且我想创建一个使用参数(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

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

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

请注意,DELETE FROM

SELECT * FROM 

有用。

甚至可以使用参数删除一些东西吗?

泰。

4

1 回答 1

11

You aren't allowed to introduce an alias at that part of a DELETE statement - nor do you need one in this case:

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

For a more complex query, you might want to use an alias, but note that (confusingly), the DELETE will have two FROM clauses - and you can only introduce the alias in the second one:

DELETE FROM di
FROM [dbo].[tblDecisionInvolvement] di
            inner join
      AnotherTable tab
           on
              di.Column = tab.Column2
WHERE tab.Column99 = @Value
于 2012-08-07T12:46:16.960 回答