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

san*_*der 2 stored-procedures sql-server-2008-r2

我正在使用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
Run Code Online (Sandbox Code Playgroud)

这是我尝试创建它时出现的错误:

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

请注意,将更DELETE FROM改为

SELECT * FROM 
Run Code Online (Sandbox Code Playgroud)

有用.

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

TY.

Dam*_*ver 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
Run Code Online (Sandbox Code Playgroud)

对于更复杂的查询,你可能想使用的别名,但请注意,(容易混淆),则DELETE会有2项 FROM条款-你可以只介绍在第二个别名:

DELETE FROM di
FROM [dbo].[tblDecisionInvolvement] di
            inner join
      AnotherTable tab
           on
              di.Column = tab.Column2
WHERE tab.Column99 = @Value
Run Code Online (Sandbox Code Playgroud)