首页 > 电脑专区 > 电脑教程 >

SQL2005新功能:[5]改进的错误处理

来源:互联网 2023-02-20 23:28:38 241

编写 Transact-SQL 批、存储过程、触发器以及用户定义函数的程序员可用其熟悉的 TRY-CATCH 逻辑来捕获并处理错误条件。usH办公区 - 实用经验教程分享!

在早期版本的 SQL Server 中,@@ERROR 函数是检测 Transact-SQL 语句中的错误的主要手段。TRY...CATCH 构造提供了改善的功能。usH办公区 - 实用经验教程分享!

工具/原料

  • SQL2005,或更高版本(这里使用SQL2012)

TRY...CATCH更强大

  • 1

    TRY...CATCH处理的错误更多。usH办公区 - 实用经验教程分享!

    @@ERROR仅能判断严重级别在11-16之间的错误(指示可由用户纠正的错误)。usH办公区 - 实用经验教程分享!

    TRY...CATCH不仅能判断严重级别在11-16之间的错误,还能判断严重级别在17-19之间的错误(指示无法由用户纠正的软件错误,请将问题通知系统管理员)。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • 1该信息未经授权抓取自百度经验
  • 2

    TRY...CATCH使用更方便,且不易出错。usH办公区 - 实用经验教程分享!

    每个 Transact-SQL 语句完成时,都需要使用@@ERROR 判断值;而TRY...CATCH不需要,使用一个语句块即可。usH办公区 - 实用经验教程分享!

    注意:在 Transact-SQL 语句完成后,需要立即测试或使用 @@ERROR,就连IF判断都能重置@@ERROR值。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • 如何处理编译错误和语句级重新编译错误

  • 1

    对于与 TRY...CATCH 构造在同一执行级别发生的错误,TRY...CATCH 将不处理以下两类错误:usH办公区 - 实用经验教程分享!

    ●编译错误,例如阻止批处理执行的语法错误。usH办公区 - 实用经验教程分享!

    ●语句级重新编译过程中出现的错误,例如由于名称解析延迟而造成在编译后出现对象名解析错误。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • 2

    通过执行 TRY 块内单独批处理中的错误生成代码,可以使用 TRY...CATCH 来处理编译或语句级重新编译过程中发生的错误。例如,这可以通过在存储过程中放置代码或使用sp_executesql执行动态 Transact-SQL 语句来实现。这使 TRY...CATCH 能够在比错误发生的执行级别更高的执行级别捕获错误。usH办公区 - 实用经验教程分享!

    下面将try语句块的代码放到另外一个存储过程处理。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • 如何处理不可提交的事务

  • 1

    在 TRY...CATCH 构造中,事务可以进入一种状态:事务保持打开但无法提交,这将引起死锁。usH办公区 - 实用经验教程分享!

    将sp_test1加上事务,改成sp_test3,如下。usH办公区 - 实用经验教程分享!

    使用SET XACT_ABORT ON可回滚事务。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • 2

    针对sp_test2加事务的处理。usH办公区 - 实用经验教程分享!

    通过判断XACT_STATE()来提交/回滚事务操作。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • 感谢阅读

  • 1

    感谢你把本经验阅读完,如果有写的不好的地方,请指出以便纠正,以免误人子弟。usH办公区 - 实用经验教程分享!

    如果觉得本经验有用,浪费你几秒钟的时间在页面左下方点个赞。在页面顶部/经验底部投个票。usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

    SQL2005新功能:[5]改进的错误处理usH办公区 - 实用经验教程分享!

  • XML数据类型|下一篇:

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!usH办公区 - 实用经验教程分享!


    标签: 错误功能改进处理

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码