欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

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

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

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

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

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

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

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

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

insert INTO table1 VALUES(1, ’aa’)

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

IF @@ERROR > 0

PRINT ’鍵值沖突’

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

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

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