任何程序都可能出现错误,在SQL Server中执行Transact-SQL也不例外。假如在Transact-SQL中发生了错误,一般有两种捕捉错误的 *** ,一种是在客户端代码(如C#、Delphi等)中使用类似try...catch的语句进行捕捉;另外一种就是在Transact-SQL中利用Transact-SQL本身提供的错误捕捉机制进行捕捉。假如是因为Transact-SQL语句的执行而产生的错误,如键值冲突,使用之一种和第二种 *** 都可以捕捉,但是假如是逻辑错误,使用客户端代码进行捕捉就不太方便。因此,本文就如何使用Transact-SQL进行错误捕捉进行了讨论。
一、非致命错误(non-fatal error)的捕捉
通过执行Transact-SQL而产生的错误可分为两种:致命错误(fatal error)和非致命错误(non-fatal error)。在Transact-SQL中只可以捕捉非致命错误(如键值冲突),而无法捕捉致命错误(如语法错误)。在Transact-SQL中可以通过系统变量@@ERROR判断最近执行的一条语句是否成功执行。假如发生了错误,@@Error的值大于0,否则值为0。下面举一个例子说明@@ERROR的使用。
假设有一个表table1,在这个表中有两个字段f1,f2。其中f1是主键。
INSERT INTO table1 VALUES(1, 'aa')
可以看出,这个改写的部分未使用SELECT查询table1中是否已经有了某条记录,而是通过数据库的约束来进行判断的。假如键值冲突,就产生了错误,这样SQL语句就直接跳到BEGIN CATCH中执行错误处理代码。这样做效率要比上一个版本高得多,而且假如将RAISERROR去掉,p1就不会抛出任何错误,只是返回了一个错误码,这样有利于客户端代码进行处理。
在Transact-SQL中进行错误捕捉,假如使用的是SQL Server2005,我的建议是尽量使用try...catch,因此它会捕捉到未预料到的错误,并且会使Transact-SQL更容易维护。当然,这样做就无法将Transact-SQL移植到SQL Server2000或更低的版本上运行,要是想写通用的Transact-SQL,还是使用传统的 *** 捕捉错误吧!
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态 Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...
假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...
问题现象,具体如下所示: 故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。 解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...
问:我在Windows 7 Ultimate X64下播放电影视频时,不管什么格式都会蓝屏,错误代码“0x00000124”。换解码器、播放器不行,换驱动、内存也不管用。在不同的电脑上也试过,仍然蓝屏。请问是哪里的问题,如何解决 答:64位 Windows 7直接使用PotPlayer x64就...
很多朋友从XP升级迈入了Windows 7的殿堂,却发现,Windows 7确实好用和华丽,可是有一些地方不太适应。今天举出一则例子,是把Windows 7系统下的宋体替换为XP系统下的字体。这个并非无聊,大家去网上搜索下,就知道有多少人想要这么做了。 没办法,每人的需求总是那么的不同,好吧,怀旧...
星际争霸是一款非常经典的战争策略游戏,虽然已有十多年的历史,但依然有一批忠实的游戏玩家坚守着星际战争,而随着Windows系统的不断更新,Windows 7下玩星际争霸已经不能像WinXP那样顺利了,很多Windows 7玩家在玩星际争霸时候都会出现花屏问题,那么我们该如何应对呢 Windo...