国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sql server 2005中新增加的try catch學習

2024-08-31 00:50:58
字體:
來源:轉載
供稿:網友

sql server 2005中新增加的try catch,可以很容易捕捉異常了,今天大概學習看了下,歸納下要點如下

基本用法BEGIN TRY
     {  sql_statement |
 statement_block  }
END TRY
BEGIN CATCH
     {  sql_statement |
 statement_block }
END CATCH
,和普通語言的異常處理用法差不多,但要注意的是,SQL SERVER只捕捉那些不是嚴重的異常,當比如數據庫不能連接等這類異常時,是不能捕捉的一個例子:BEGIN TRY
  DECLARE @X INT
  -- Divide by zero to generate Error
  SET @X = 1/0
  PRINT 'Command after error in TRY block'
END TRY
BEGIN CATCH
  PRINT 'Error Detected'
END CATCH
PRINT 'Command after TRY/CATCH blocks' 
另外try catch可以嵌套Begin TRY
  delete from GrandParent where Name = 'John Smith'
  print 'GrandParent deleted successfully'
End Try
Begin Catch
   Print 'Error Deleting GrandParent Record'
   Begin Try
     delete from Parent where GrandParentID =
     (select distinct ID from GrandParent where Name = 'John Smith')
     Print 'Parent Deleted Successfully'
   End Try
   Begin Catch
     print 'Error Deleting Parent'
     Begin Try
       delete from child where ParentId =
     (select distinct ID from Parent where GrandParentID =
     (select distinct ID from GrandParent where Name = 'John Smith'))
       print 'Child Deleted Successfully'
     End Try
     Begin Catch
       Print 'Error Deleting Child'
     End Catch
   End Catch
 End Catch
另外,SQL SERVER 2005在異常機制中,提供了error類的方法方便調試,現摘抄如下,比較簡單,不予以解釋ERROR_NUMBER(): Returns a number associated with the error.ERROR_SEVERITY(): Returns the severity of the error.ERROR_STATE(): Returns the error state number associated with the error.ERROR_PROCEDURE(): Returns the name of the stored procedure or trigger in which the error occurred.ERROR_LINE(): Returns the line number inside the failing routine that caused the error. ERROR_MESSAGE(): Returns the complete text of the error message. The text includes the values supplied for any substitutable parameters, such as lengths, object names, or times. 最后舉例子如下,使用了error類的方法BEGIN TRY
  DECLARE @X INT
  -- Divide by zero to generate Error
  SET @X = 1/0
  PRINT 'Command after error in TRY block'
END TRY
BEGIN CATCH
  PRINT 'Error Detected'
  SELECT ERROR_NUMBER() ERNumber,
         ERROR_SEVERITY() Error_Severity,
         ERROR_STATE() Error_State,
         ERROR_PROCEDURE() Error_Procedure,
         ERROR_LINE() Error_Line,
         ERROR_MESSAGE() Error_Message
END CATCH
PRINT 'Command after TRY/CATCH blocks'
最后輸出Error Detected
Err_Num Err_Sev Err_State Err_Proc             Err_Line  Err_Msg
------- ------- --------- -------------------- --------- --------------------------------
8134        16          1 NULL                 4        Divide by zero error encountered.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔南| 涿鹿县| 襄城县| 平安县| 天柱县| 民乐县| 灵川县| 嘉善县| 内丘县| 吉林省| 大冶市| 政和县| 新津县| 大足县| 广饶县| 福鼎市| 犍为县| 常熟市| 澜沧| 广宗县| 马鞍山市| 邮箱| 肇州县| 白水县| 海伦市| 三门峡市| 游戏| 昔阳县| 东台市| 静宁县| 常德市| 日照市| 东辽县| 福贡县| 鹤峰县| 东丽区| 余干县| 内乡县| 广宁县| 侯马市| 鸡泽县|