为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2022-04-21 19:11:55
begin tranbegin TRYinsert into student values('dsa','sad',2)declare @id intselect @id=max(id) from studentinsert into jl(jnr) values(@id)commit tranend TRYbegin catchrollback tranend catch执行出现服务器: 消息 170,级别 15,状态 1,行 1第 1 行: 'TRY' 附近有语法错误。
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

sql server 2000这个版本中是没有try catch的语法的。
在Sql 2000中,为了成功执行这个存储过程,我需要在每一条语句后面去判断@@ERROR,如果有错,则执行回滚.
在SQL2005版本及以上才提供此语法,可对待程序代码一样处理Sql中的异常:

BEGIN TRY
BEGIN TRANSACTION
--删除卡的记录
delete from ObjTransportCard where CardId=@CardId
--删除交易的记录
delete from ObjTransaction where CardId=@CardId
COMMIT
END TRY

BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK

DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()

RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH



查看完整回答
反对 回复 2022-04-24
?
函数式编程

TA贡献1807条经验 获得超9个赞

没有!你既然用了事务,怎么不这么写

begin tran

insert into student values('dsa','sad',2)
declare @id int
select @id=max(id) from student
insert into jl(jnr) values(@id)

IF @@Error<>0
BEGIN
PRINT '有错误,回滚'
ROLLBACK TRANSACTION--事务回滚语句
END
ELSE
BEGIN
PRINT '成功,提交'
COMMIT TRANSACTION--事务提交语句
END

end



查看完整回答
反对 回复 2022-04-24
  • 2 回答
  • 0 关注
  • 344 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号