请问该要怎么用啊? 我写了个事务?附近有语法错误,如何解决?

begin tran

begin TRY

insert into student values('dsa','sad',2)
declare @id int
select @id=max(id) from student
insert into jl(jnr) values(@id)
commit tran
end TRY
begin catch
rollback tran
end catch

执行
出现服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'TRY' 附近有语法错误。

慕沐林林
浏览 347回答 2
2回答

慕码人8056858

sql server 2000这个版本中是没有try catch的语法的。在Sql 2000中,为了成功执行这个存储过程,我需要在每一条语句后面去判断@@ERROR,如果有错,则执行回滚.在SQL2005版本及以上才提供此语法,可对待程序代码一样处理Sql中的异常:BEGIN TRYBEGIN TRANSACTION--删除卡的记录delete from ObjTransportCard where CardId=@CardId--删除交易的记录delete from ObjTransaction where CardId=@CardIdCOMMITEND TRYBEGIN CATCHIF @@TRANCOUNT > 0ROLLBACKDECLARE @ErrMsg nvarchar(4000), @ErrSeverity intSELECT @ErrMsg = ERROR_MESSAGE(),@ErrSeverity = ERROR_SEVERITY()RAISERROR(@ErrMsg, @ErrSeverity, 1)END CATCH

函数式编程

没有!你既然用了事务,怎么不这么写begin traninsert into student values('dsa','sad',2)declare @id intselect @id=max(id) from studentinsert into jl(jnr) values(@id)IF @@Error<>0BEGINPRINT '有错误,回滚'ROLLBACK TRANSACTION--事务回滚语句ENDELSEBEGINPRINT '成功,提交'COMMIT TRANSACTION--事务提交语句ENDend
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server