日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

淺談在SQL Server2005中進(jìn)行錯(cuò)誤捕捉_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解析SQL Server 2000 SP4與數(shù)據(jù)鏈接池問題
今天遠(yuǎn)程連接一臺(tái)xp sp2上的SQL,報(bào)錯(cuò)信息如下: 以下為引用的內(nèi)容:   Timeout expired. The timeout period elapsed prior to obtaining

任何程序都可能出現(xiàn)錯(cuò)誤,在SQL Server中執(zhí)行Transact-SQL也不例外。如果在Transact-SQL中發(fā)生了錯(cuò)誤,一般有兩種捕捉錯(cuò)誤的方法,一種是在客戶端代碼(如C#、Delphi等)中使用類似try...catch的語句進(jìn)行捕捉;另外一種就是在Transact-SQL中利用Transact-SQL本身提供的錯(cuò)誤捕捉機(jī)制進(jìn)行捕捉。如果是因?yàn)門ransact-SQL語句的執(zhí)行而產(chǎn)生的錯(cuò)誤,如鍵值沖突,使用第一種和第二種方法都可以捕捉,但是如果是邏輯錯(cuò)誤,使用客戶端代碼進(jìn)行捕捉就不太方便。因此,本文就如何使用Transact-SQL進(jìn)行錯(cuò)誤捕捉進(jìn)行了討論。

一、非致命錯(cuò)誤(non-fatal error)的捕捉

通過執(zhí)行Transact-SQL而產(chǎn)生的錯(cuò)誤可分為兩種:致命錯(cuò)誤(fatal error)和非致命錯(cuò)誤(non-fatal error)。在Transact-SQL中只可以捕捉非致命錯(cuò)誤(如鍵值沖突),而無法捕捉致命錯(cuò)誤(如語法錯(cuò)誤)。在Transact-SQL中可以通過系統(tǒng)變量@@ERROR判斷最近執(zhí)行的一條語句是否成功執(zhí)行。如果發(fā)生了錯(cuò)誤,@@Error的值大于0,否則值為0。下面舉一個(gè)例子說明@@ERROR的使用。

假設(shè)有一個(gè)表table1,在這個(gè)表中有兩個(gè)字段f1,f2。其中f1是主鍵。

以下為引用的內(nèi)容:

insert INTO table1 VALUES(1, ’aa’)

insert INTO table1 VALUES(1, ’bb’) --這條語句將產(chǎn)生一個(gè)錯(cuò)誤

IF @@ERROR > 0

PRINT ’鍵值沖突’

當(dāng)執(zhí)行第二條語句時(shí)發(fā)生鍵值沖突錯(cuò)誤,@@ERROR被賦為錯(cuò)誤號(hào)2627,因此輸出結(jié)果顯示’鍵值沖突’。使用@@ERROR系統(tǒng)變量時(shí)需要注意,@@ERROR只記錄最近一次執(zhí)行的Transact-SQL語句所發(fā)生的錯(cuò)誤,如果最近一次執(zhí)行的Transact-SQL沒有發(fā)生錯(cuò)誤,@@ERROR的值為0。因此,只能在被捕捉的那條Transact-SQL語句后使用@@ERROR。

分享:解析SQL Server 2008對(duì)T-SQL語言的增強(qiáng)
Microsoft SQL Server 2008 對(duì) T-SQL 語言進(jìn)行了進(jìn)一步增強(qiáng)。為了讓開發(fā)人員盡快了解這些變化,我們針對(duì) 2007 年 6 月 CTP 版本的 SQL Server 2008 中的 T-SQL 語言的新增功能進(jìn)行

共3頁上一頁123下一頁
來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時(shí)間:2009-09-01
相關(guān)Mssql數(shù)據(jù)庫教程