在SQL Server 2005数据库中进行错误捕捉(3)
作者:Blithe 发布时间:2008-12-02 14:39:00
SQL Server 2005数据库中错误捕捉的新功能
虽然在以前的SQL Server版本中可以通过一些技巧实现错误捕捉,但有时需要增加一些额外的开销,如在p1中使用了SELECT语句。庆幸的是在SQL Server2005中提供了和大多数编程语言类似的try...catch错误捕捉功能,从而使Transact-SQL第一次可以真正地进行错误捕捉。使用try...catch可以将p1的下半部分改写为如下形式。
ELSE
BEGIN
BEGIN TRY
INSERT INTO table1 VALUES(@Num, 'p')
COMMIT TRANSACTION
RETURN 0
END TRY
BEGIN CATCH
RAISERROR('table1中已经存在%d了。', 16, 1, @Num)
ROLLBACK TRANSACTION
RETURN 2
END CATCH
END
我们可以发现,这个改写的部分未使用SELECT查询table1中是否已经有了某条记录,而是通过数据库的约束来进行判断的。如果键值冲突,就产生了错误,这样SQL语句就直接跳到BEGIN CATCH中执行错误处理代码。这样做效率要比上一个版本高得多,而且如果将RAISERROR去掉,p1就不会抛出任何错误,只是返回了一个错误码,这种做法的好处是有利于客户端代码进行处理。
如果使用SQL Server 2005数据库,在Transact-SQL中进行错误捕捉,建议尽量使用try...catch,因为它会捕捉到未预料到的错误,并且会使Transact-SQL更易于维护。当然,这样做就无法将Transact-SQL移植到SQL Server2000或更低的版本上运行,如果想写通用的Transact-SQL,读者可以使用传统的方法来捕捉错误。


猜你喜欢
- 在多线程的线程里边,用一个线程处理一条连接,如何判断连接已经关闭?试了一下,如果连接中断,读写会出现这种net.OpError,这个就可以判
- python的代码错误检查通常用pep8、pylint和flake8,自动格式化代码通常用autopep8、yapf、black。这些工具均
- 之前我们使用VSCode搭建C#项目,今天写一篇关于django项目的搭建,其实以其说是搭建django框架,不如说是如何通过vscode开
- 发帖或者回帖的时候,系统会提示银两或经验增加的效果,慢慢出现又慢慢消失,用于取代对话框的那种是如何实现的?用google的jquery ap
- 输入:[1.0000, -1.0000, 3.0000]课本中的标准差计算公式:按照上述公式计算:Numpy中的std计算:import n
- 本文实现文件分类器的目的主要是为了将办公过程中产生的各种格式的文件完成整理。通过自定义需要整理的文件目录,将该目录下面的全部文件按照文件格式
- Residual BlockResNet中最重要的组件是残差块(residual block),也称为残差单元(residual unit)
- 通常文本设置要不在wxml中设置,再要不就是通过weml绑定在js中设置文字。wxml<view > <text>我
- 本文实例分析了Flask和Django框架中自定义模型类的表名、父类相关问题。分享给大家供大家参考,具体如下:一. Flask和Django
- 1、获取当前年月日时分秒# -*- encoding=utf-8 -*-import datetimenow = datetime.date
- 技术背景对于一些连续运行或者长时间运行的Python程序而言,如服务器的后端,或者是长时间运行的科学计算程序。当我们涉及到一些中途退出的操作
- 如果不配置.gitignore的文件,带push代码的时候就会把一写不必要的文件push到远程仓库,如.idea文件。如果不小心出现此文件在
- 一、场景描述这里有以四张发票为例(辰哥网上搜的),将发票图片放到pic文件夹下。随便打开一张发票提取目标:金额、名称、纳税人识别号、开票人。
- 背景:我司Redis服务器使用的亚马逊服务,本地需要通过跳板机,然后才有权限访问Redis服务。连接原理:使用SSHTunnelForwar
- 简介:Mysql数据库按时间点恢复实战对于任何一家企业来讲,数据都是最宝贵的财富。如何保护数据完整性,数据不受损坏,在发生故障时,如何保住数
- 图片非常重要,它们可以让你的页面更好看,更引人注目。但是,高质量和漂亮的图片常常会很大,它们会让页面加载变慢并消耗更多带宽。所以我们,这些设
- 在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简
- 本文实例讲述了Go语言的队列和堆栈实现方法。分享给大家供大家参考。具体如下:golang,其实我的实现是利用container/list包实
- 下载8000首儿歌的python的代码:#-*- coding: UTF-8 -*-from pyquery import PyQuery
- 本文实例为大家分享了python+rsync精确同步指定格式文件的具体代码,供大家参考,具体内容如下# coding: utf-8#!/us