婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL Server 2005 中使用 Try Catch 處理異常

SQL Server 2005 中使用 Try Catch 處理異常

熱門標簽:電銷機器人虛擬號碼 松原導航地圖標注 九鹿林外呼系統怎么收費 海南自動外呼系統價格 創業電銷機器人 滄州營銷外呼系統軟件 沈陽智能外呼系統代理 浙江地圖標注 舞鋼市地圖標注app

TRY...CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了開發人員異常處理能力.沒有理由不嘗試一下Try.. Catch功能.

* TRY 塊 - 包含可能產生異常的代碼或腳本
* CATCH 塊 - 如果TRY塊出現異常,代碼處理流將被路由到CATCH塊.在這里你可以處理異常,記錄日志等.
Sql Server中的Try Catch和C#,JAVA等語言的處理方式一脈相承.這種一致性才是最大的創新之處.

一、SQL SERVER 2000中異常處理

CREATE PROC usp_AccountTransaction 
 
  @AccountNum INT, 
 
  @Amount DECIMAL 
 
AS 
 
BEGIN 
 
  BEGIN TRANSACTION --beginning a transaction.. 
 
    UPDATE MyChecking SET Amount = Amount - @Amount 
 
      WHERE AccountNum = @AccountNum 
 
    IF @@ERROR != 0 --check @@ERROR variable after each DML statements.. 
 
    BEGIN 
 
      ROLLBACK TRANSACTION --RollBack Transaction if Error.. 
 
      RETURN 
 
    END 
 
    ELSE 
 
    BEGIN 
 
      UPDATE MySavings SET Amount = Amount + @Amount 
 
        WHERE AccountNum = @AccountNum 
 
      IF @@ERROR != 0 --check @@ERROR variable after each DML statements.. 
 
      BEGIN 
 
        ROLLBACK TRANSACTION --RollBack Transaction if Error.. 
 
        RETURN 
 
      END 
 
      ELSE 
 
      BEGIN 
 
        COMMIT TRANSACTION --finally, Commit the transaction if Success.. 
 
        RETURN 
 
      END 
 
    END 
 
END 
 
GO 

上面是Sql server 2000的一個存儲過程,在每個數據庫操作之后立即必須檢查@@ERROR,進行Commit / RollBack該事務.
Sql server 2000中監測錯誤,只能通過監測全局遍歷 @@ERROR.由于@@ERROR會被下一個數據庫操作所覆蓋. 所以在每次操作完后必須立即監測.

二、SQL SERVER 2005中異常處理

TRY...CATCH是SQL Server 2005提供的更具有可讀性的語法.每個開發人員都熟悉這種寫法.SQL Server 2005仍然支持@@ERROR這種用法.

1.try catch語法:

BEGIN TRY 
 
  Try Statement 1 
 
  Try Statement 2 
 
  ... 
 
  Try Statement M 
 
END TRY 
 
BEGIN CATCH 
 
  Catch Statement 1 
 
  Catch Statement 2 
 
  ... 
 
  Catch Statement N 
 
END CATCH 

2.獲得錯誤信息的函數表:

下面系統函數在CATCH塊有效.可以用來得到更多的錯誤信息:

函數 描述

ERROR_NUMBER() 返回導致運行 CATCH 塊的錯誤消息的錯誤號。
ERROR_SEVERITY() 返回導致 CATCH 塊運行的錯誤消息的嚴重級別
ERROR_STATE() 返回導致 CATCH 塊運行的錯誤消息的狀態號
ERROR_PROCEDURE() 返回出現錯誤的存儲過程名稱
ERROR_LINE() 返回發生錯誤的行號
ERROR_MESSAGE() 返回導致 CATCH 塊運行的錯誤消息的完整文本

簡單示例:

BEGIN TRY 
 
  SELECT GETDATE() 
 
  SELECT 1/0--Evergreen divide by zero example! 
 
END TRY 
 
BEGIN CATCH 
 
  SELECT 'There was an error! ' + ERROR_MESSAGE() 
 
  RETURN 
 
END CATCH; 

3.try catch回滾/提交事務的示例

ALTER PROC usp_AccountTransaction 
 
  @AccountNum INT, 
 
  @Amount DECIMAL 
 
AS 
 
BEGIN 
 
  BEGIN TRY --Start the Try Block.. 
 
    BEGIN TRANSACTION -- Start the transaction.. 
 
      UPDATE MyChecking SET Amount = Amount - @Amount 
 
        WHERE AccountNum = @AccountNum 
 
      UPDATE MySavings SET Amount = Amount + @Amount 
 
        WHERE AccountNum = @AccountNum 
 
    COMMIT TRAN -- Transaction Success! 
 
  END TRY 
 
  BEGIN CATCH 
 
    IF @@TRANCOUNT > 0 
 
      ROLLBACK TRAN --RollBack in case of Error 
 
    -- you can Raise ERROR with RAISEERROR() Statement including the details of the exception 
 
    RAISERROR(ERROR_MESSAGE(), ERROR_SEVERITY(), 1) 
 
  END CATCH 
 
END 
 
GO

三、實例講解

創建錯誤日志表:

CREATE TABLE ErrorLog(errNum INT,ErrSev NVARCHAR(1000),ErrState INT,ErrProc NVARCHAR(1000),ErrLine INT, ErrMsg NVARCHAR(2000))

創建錯誤日志記錄存儲過程:

CREATE PROCEDURE ErrorLog
AS 
   SELECT ERROR_NUMBER() AS ErrNum,ERROR_SEVERITY()AS ErrSev,ERROR_STATE() AS ErrState,ERROR_PROCEDURE() AS ErrProc,ERROR_LINE()AS ErrLine,ERROR_MESSAGE()AS ErrMsg 
   INSERT 
   INTO ErrorLog 
   VALUES(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE())
GO

寫一個存儲過程吧!里面使用一下Try Catch:

USE [Your_Test]
GO
/****** Object: StoredProcedure [dbo].[getTodayBirthday]  
    Script Date: 05/17/2010 15:38:46 
    Author:jinho
    Desc:獲取當天生日的所有人
    ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getTodayBirthday]
AS
BEGIN TRY
 declare @today datetime; 
 SET @today = GETDATE();--獲取今天的日期
 DECLARE @day VARCHAR(2);
 SET @day =REPLACE(DAY(@today),0,'');
 DECLARE @month VARCHAR(2) ;
 SET @month = REPLACE(month(@today),0,'');
 DECLARE @year VARCHAR(4);
 SET @year = YEAR(@today);
 SELECT * FROM dbo.UserInfo WHERE REPLACE(DAY(CONVERT(DATETIME,Birthday )),0,'') =@day AND REPLACE(MONTH(CONVERT(DATETIME,Brithday)),0,'')=@month AND Birthday IS NOT NULL 

 END TRY
 BEGIN CATCH
 ErrorLog --調用上面的存儲過程,保存錯誤日志
 END CATCH

說明:ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE() 這幾個函數只能用在Catch里面!

您可能感興趣的文章:
  • SQL Server出現System.OutOfMemoryException異常的解決方法
  • 解決SQL SERVER數據庫備份時出現“操作系統錯誤5(拒絕訪問)。BACKUP DATABASE 正在異常終止。”錯誤的解決辦法
  • SQL Server自定義異常raiserror使用示例
  • SQLServer 連接異常與解決方法小結
  • SQLserver2000 企業版 出現"進程51發生了嚴重的異常"錯誤的處理方法
  • SqlServer異常處理常用步驟
  • SQL Server異常代碼處理的深入講解

標簽:日喀則 臺灣 咸寧 公主嶺 西藏 寶雞 海口 商洛

巨人網絡通訊聲明:本文標題《SQL Server 2005 中使用 Try Catch 處理異常》,本文關鍵詞  SQL,Server,2005,中,使用,Try,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server 2005 中使用 Try Catch 處理異常》相關的同類信息!
  • 本頁收集關于SQL Server 2005 中使用 Try Catch 處理異常的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩成人精品视频| 91精品国产免费| 国产成人精品一区二| 东方aⅴ免费观看久久av| 91高清在线观看| 18成人在线观看| 国产一区二区在线影院| 欧美日韩精品一区二区三区蜜桃| 欧美成人精品高清在线播放 | 欧美日韩国产美| 久久蜜桃av一区精品变态类天堂| 国产日韩av一区二区| 亚洲人成电影网站色mp4| 亚洲男人都懂的| 日本伦理一区二区| 亚洲欧洲美洲综合色网| 日韩不卡一二三区| 99精品桃花视频在线观看| 精品日韩在线观看| 国产经典欧美精品| 国产精品污www在线观看| 婷婷中文字幕综合| 日韩女优视频免费观看| k8久久久一区二区三区 | 久久精品噜噜噜成人av农村| 91精品啪在线观看国产60岁| 国产精品久久久久久久久搜平片| 99久久国产免费看| 亚洲精品一二三四区| 在线免费精品视频| 青青草97国产精品免费观看无弹窗版| 日韩视频一区二区在线观看| 九九在线精品视频| 国产精品二三区| 欧洲激情一区二区| 懂色av一区二区三区免费观看| 久久精品日产第一区二区三区高清版| 国产成人免费视频网站高清观看视频 | 亚洲自拍欧美精品| 欧美日韩一区二区三区四区五区 | 久久国产精品免费| 午夜精品一区在线观看| 国产偷国产偷精品高清尤物 | 免费在线观看一区| 国产欧美日韩不卡免费| 久久精品欧美日韩精品| 欧美tickle裸体挠脚心vk| 99久久免费视频.com| 日韩精品国产欧美| 亚洲欧美成人一区二区三区| 国产精品嫩草影院com| 久久女同精品一区二区| 日本乱码高清不卡字幕| 成人午夜免费av| 91丨国产丨九色丨pron| 欧美在线观看18| 欧美色区777第一页| 成人激情免费视频| 色婷婷综合久久久中文一区二区| 成人动漫一区二区三区| 韩国av一区二区三区四区| 亚洲欧美日韩成人高清在线一区| 亚洲九九爱视频| 偷偷要91色婷婷| 色综合久久综合网97色综合| 色综合久久综合| 欧美国产精品久久| 国产综合久久久久久鬼色| 3751色影院一区二区三区| 亚洲午夜久久久久久久久电影网 | 丁香天五香天堂综合| 亚洲夂夂婷婷色拍ww47| 成人综合婷婷国产精品久久蜜臀| 激情五月播播久久久精品| 国产精品久久三| 欧美日韩午夜影院| 884aa四虎影成人精品一区| 亚洲成a天堂v人片| 国产女人18毛片水真多成人如厕| 91久久一区二区| 99国产精品久久久久久久久久| 另类小说欧美激情| 国产日韩欧美一区二区三区乱码| 成人免费视频国产在线观看| 夜夜精品视频一区二区| 欧美日韩国产另类一区| 日韩av电影免费观看高清完整版在线观看| 91麻豆精东视频| 无码av免费一区二区三区试看| 欧美精品tushy高清| 九九热在线视频观看这里只有精品| 99久久精品国产导航| 国产乱国产乱300精品| 欧美成人猛片aaaaaaa| 亚洲精品视频观看| 欧美日韩精品一区二区天天拍小说| 日本午夜精品视频在线观看| 国产成人在线观看免费网站| 99久久精品免费| 欧美视频一二三区| 久久久久久久精| 美女久久久精品| 欧美午夜精品免费| 久久久99久久| 久久99九九99精品| 91.麻豆视频| 国产精品―色哟哟| www.亚洲国产| 中文字幕一区二区三区色视频| 三级在线观看一区二区| 美女视频网站久久| 欧美久久久久久久久| 亚洲欧洲精品天堂一级 | 免费久久99精品国产| 99re亚洲国产精品| 亚洲精品自拍动漫在线| 99麻豆久久久国产精品免费 | 色激情天天射综合网| 欧美一区二区三区影视| 亚洲精品国产视频| 一区二区三区欧美日韩| 日韩欧美电影在线| 99久久久国产精品| 国产在线精品国自产拍免费| 成人福利在线看| 国产精品乱码人人做人人爱| 91视视频在线直接观看在线看网页在线看| 亚洲国产成人在线| 五月婷婷另类国产| 国产精品18久久久久久久久 | 日韩精品一区二区三区swag| 欧美成人性战久久| 成人免费观看av| 欧美精品一区二区久久久| 亚洲你懂的在线视频| 国产福利一区二区三区视频在线| 北条麻妃国产九九精品视频| 一区二区三区鲁丝不卡| 99精品欧美一区二区三区小说 | 国产成人在线视频网站| 福利一区二区在线| 久久网这里都是精品| 日本一区二区三区在线观看| 成人国产精品免费观看| 中文字幕一区二区5566日韩| 欧洲一区二区av| 午夜精品久久久久久久99樱桃| 欧美顶级少妇做爰| 国产自产v一区二区三区c| 欧美极品aⅴ影院| 精品一区二区三区在线播放 | 91麻豆免费看| 国产一区视频导航| 91蝌蚪porny| 不卡在线观看av| 国产精品一二三在| 青椒成人免费视频| 国产精品久久久久天堂| 中文字幕免费不卡| 久久久777精品电影网影网 | 精品一区二区三区在线观看国产| 亚洲欧美日韩久久| 精品视频123区在线观看| 一本久久a久久精品亚洲| 91社区在线播放| 欧美电影在线免费观看| 激情五月婷婷综合| 国产成人在线色| 99精品1区2区| 日韩欧美一二三区| 欧美片网站yy| 18涩涩午夜精品.www| 亚洲成人动漫在线观看| 国产酒店精品激情| 国产美女一区二区三区| 在线精品观看国产| 久久综合久久综合久久| 国产精品九色蝌蚪自拍| 久久国产人妖系列| 欧美日韩一区二区三区高清| 日韩精品中午字幕| 色综合久久综合网欧美综合网| 欧美伦理视频网站| 夜夜揉揉日日人人青青一国产精品| 久久福利视频一区二区| 色婷婷国产精品久久包臀 | 欧美国产成人在线| 秋霞国产午夜精品免费视频| 不卡视频在线看| 久久久另类综合| 六月丁香综合在线视频| 欧美日韩国产免费| 天天色天天爱天天射综合| 一本色道久久综合亚洲91| 国产精品久久久久影院亚瑟| 高清成人免费视频| **性色生活片久久毛片| 美女视频一区二区| 久久久久亚洲蜜桃| 成人国产精品免费网站|