我正在使用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
这是我尝试创建时遇到的错误:
Msg 156,Level 15,State 1,Procedure sp_deleteDecision,Line 6
关键字'附近的语法不正确为'。
消息156,级别15,状态1,过程sp_deleteDecision,第8行
关键字'附近的语法错误为'。
请注意,将DELETE FROM
更改为
SELECT * FROM
它有效。
甚至可以使用参数删除某些内容吗?
泰
答案 0 :(得分:10)
您不能在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
对于更复杂的查询,您可能希望使用别名,但请注意(令人困惑),DELETE
将包含两个 FROM
条款 - 您可以只在第二个中引入别名:
DELETE FROM di
FROM [dbo].[tblDecisionInvolvement] di
inner join
AnotherTable tab
on
di.Column = tab.Column2
WHERE tab.Column99 = @Value