小编Pra*_*aje的帖子

在存储过程中使用Begin tran,包括更新语句和CTE

我的存储过程结构如下所示,我收到一个错误

关键字'BEGIN'附近的语法不正确.

如果我删除BEGIN TRANCOMMIT TRAN语句然后存储过程运行正常.我不确定我做错了什么.任何人都可以帮助我理解什么是错的,什么应该是正确的方法?

Create PROCEDURE proc_name(param1,param2,param3)
AS
Begin
with cte(col1, col2, col3)
AS
(
Select col1
,col2
,col3
from table1
)
Begin Tran
Update table2
set col1 = 'text'
from table2 inner join cte on cte.hmy = table2.hmy
where some condition

update table3
set date = ''
from table3 inner join cte on cte.hmy = table3.hmy
where some different condition

COMMIT TRAN

END
Run Code Online (Sandbox Code Playgroud)

PS请忽略查询逻辑.我尝试通过删除业务逻辑来简化代码.

sql-server sql-server-2012 sql-server-2014

2
推荐指数
1
解决办法
2168
查看次数