存储过程使用事务:
1)在操作临时表时使用try-catch获取数据
2)在操作实体表是使用事务+try-catch操作数据
优点:
1)使用try-catch保证生成临时表数据正确性
2)使用try-catch保证生成实体表数据正确性
3)使用事务保证操作实体表时,如果有异常就回滚,实体表中一直有数据
BEGIN TRY
PRINT '获取数据'
--TODO 获取数据
END TRY
BEGIN CATCH -- 捕获异常
INSERT INTO Log_ServiceLog(ServiceLogID,AppID,ServiceCode,InvokeTime,Result,ExceptionMsg)
VALUES(NEWID(),4,'SP_CreatePhysicalValue',GETDATE(),0,ERROR_MESSAGE());
PRINT '获取数据报错'
RETURN
END CATCH
BEGIN TRAN --开启事务
BEGIN TRY
PRINT '操作数据'
--TODO 操作数据
INSERT INTO Log_ServiceLog(ServiceLogID,AppID,ServiceCode,InvokeTime,Result,ExceptionMsg)
VALUES(NEWID(),4,'SP_CreatePhysicalValue',GETDATE(),1,'全周期开发阶段货值');
COMMIT TRAN -- 提交事务
END TRY
BEGIN CATCH -- 捕获异常
ROLLBACK TRAN -- 回滚事务
INSERT INTO Log_ServiceLog(ServiceLogID,AppID,ServiceCode,InvokeTime,Result,ExceptionMsg)
VALUES(NEWID(),4,'SP_CreatePhysicalValue',GETDATE(),0,ERROR_MESSAGE());
PRINT '操作数据失败'
END CATCH