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)