最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL?Server中實(shí)現(xiàn)錯(cuò)誤處理

 更新時(shí)間:2022年05月21日 11:43:44   作者:springsnow  
這篇文章介紹了SQL?Server中實(shí)現(xiàn)錯(cuò)誤處理的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、SQLServer數(shù)據(jù)庫引擎錯(cuò)誤

1、查詢系統(tǒng)錯(cuò)誤信息

SQLServer在每個(gè)數(shù)據(jù)庫的系統(tǒng)視圖sys.messages中存儲(chǔ)系統(tǒng)自定義(Message_id <= 50000)和用戶自定義(Message_id>50000)錯(cuò)誤消息。

2、系統(tǒng)錯(cuò)誤信息的嚴(yán)重性級(jí)別

得到的系統(tǒng)錯(cuò)誤消息分為不同程度的嚴(yán)重性級(jí)別。嚴(yán)重性級(jí)別是通過數(shù)字來表示的,數(shù)字越小表示嚴(yán)重級(jí)別越低。反之則嚴(yán)重性越高。嚴(yán)重性較高的錯(cuò)誤指示需要盡快解決問題。

二、用try...catch發(fā)現(xiàn)錯(cuò)誤

try...catch結(jié)構(gòu)       

begin try
        要執(zhí)行的T-SQL代碼,一旦錯(cuò)誤將傳遞給catch塊進(jìn)行處理
      end try
      begin catch
        檢索和處理錯(cuò)誤信息的代碼
      end catch
      正常執(zhí)行的T-SQL語句
  • try:其中,try塊是包含在begin try和end try之間的T-SQL代碼段,在該代碼段中一旦發(fā)生錯(cuò)誤將傳遞給catch塊,如果沒有錯(cuò)誤將直接執(zhí)行catch塊后面的代碼。
  • catch:catch塊是包含在begin catch和end catch之間的T-SQL代碼段,在該代碼段中檢索和處理try塊中的錯(cuò)誤信息。

三、捕獲錯(cuò)誤的系統(tǒng)函數(shù)

  • error_number()
    返回錯(cuò)誤的ID號(hào),對(duì)應(yīng)sys.messages系統(tǒng)視圖中的message_id字段。
  • error_line()
    返回T-SQL代碼中錯(cuò)誤出現(xiàn)的語句行數(shù)。
  • error_message()
    返回將返回給應(yīng)用程序的消息文本。該文本包括為所有可替換參數(shù)提供的值,如長度、對(duì)象名或時(shí)間。對(duì)應(yīng)sys.messages系統(tǒng)視圖中的text字段。
  • error_procedure()
    返回出現(xiàn)錯(cuò)誤的存儲(chǔ)過程或觸發(fā)器名稱。如果在存儲(chǔ)過程或觸發(fā)器中未出現(xiàn)錯(cuò)誤,該函數(shù)返回NULL。
  • error_severity()
    返回錯(cuò)誤的嚴(yán)重性級(jí)別。對(duì)應(yīng)sys.messages系統(tǒng)視圖中的severity字段。
  • error_state()
    返回狀態(tài)

 示例:

begin try
    select 1/0
end try
begin catch
    select 
        error_number() as 'number',
        error_line() as 'line',
        error_message() as 'message',
        error_severity() as 'severity',
        error_state()    as 'state'
end catch

輸出結(jié)果如圖所示:

四、用@@ERROR捕獲上一條語句的錯(cuò)誤

T-SQL還提供了一個(gè)簡單的系統(tǒng)函數(shù)@@ERROR來捕獲上一條語句的錯(cuò)誤。如果上一條語句執(zhí)行成功。@@ERROR系統(tǒng)函數(shù)將返回0;如果上一條語句生成錯(cuò)誤,@@ERROR將返回錯(cuò)誤號(hào)。

每條語句完成時(shí)@@ERROR都會(huì)更改。

例如:

select 1/0
select * from sys.messages where message_id = @@error and language_id = 2052

 結(jié)果如圖:

五、用RAISERROR反饋錯(cuò)誤

功能:

將生成的SQLServer引擎錯(cuò)誤或警告信息(從sys.messages系統(tǒng)視圖獲得)反饋到應(yīng)用程序中。sys.messages系統(tǒng)視圖中由SQLServer自身定義的信息,其message_id列的值小于等于5000。

返回用戶使用存儲(chǔ)過程sp_addmessage創(chuàng)建的自定義消息(存儲(chǔ)在系統(tǒng)視圖sys.messages中,其message_id大于50000)。

與print語句的區(qū)別:

print語句是T-SQL提供的用于反饋信息的語句,print語句只能反饋?zhàn)址蜃址磉_(dá)式的值。

raiserror語句除了print語句的功能外,還支持類似C語言仲printf函數(shù)的字符串替換功能。這樣可以先在字符串中定義要替換的數(shù)據(jù)的類型和位置,在輸出時(shí)自動(dòng)將字符串內(nèi)容進(jìn)行替換。

語法: 

raiserror({ msg_id | msg_str | @local_variable })
        { ,severity,state }
         [ ,argument [ ,...n ] ] )
         [ with option [,...n] ]

參數(shù)說明:

  • msg_id:存儲(chǔ)在sys.messages系統(tǒng)視圖中的錯(cuò)誤消息號(hào)(message_id)。如果是用戶使用as_addmessage系統(tǒng)存儲(chǔ)過程自定義的錯(cuò)誤消息,其錯(cuò)誤號(hào)應(yīng)當(dāng)大于50000.如果未指定msg_id,則返回一個(gè)錯(cuò)誤號(hào)為50000的錯(cuò)誤消息。
  • msg_str:用戶自定義消息,msg_str是一個(gè)字符串,具有可選的嵌入轉(zhuǎn)換規(guī)格。每個(gè)轉(zhuǎn)換規(guī)格都會(huì)定義參數(shù)列表中的值。如何格式化并將其置于msg_str中轉(zhuǎn)換規(guī)格位置上的字段中,轉(zhuǎn)換規(guī)格的格式如下:%[[flag][width][.precision][{h|1}]]type。
  • @local_variable:包含按照msg_str的方式格式化的字符串的任何有效字符串?dāng)?shù)據(jù)類型的變量。@local_variable的數(shù)據(jù)類型必須為char或varchar,或者必須能夠隱式轉(zhuǎn)換為這些數(shù)據(jù)類型。
  • severity:用戶定義的與該消息關(guān)聯(lián)的嚴(yán)重級(jí)別。當(dāng)使用msg_id引發(fā)使用sp_addmessage創(chuàng)建的用戶定義消息時(shí),paiserror上指定的嚴(yán)重性將覆蓋sp_addmessage中指定的嚴(yán)重性。
  • state:狀態(tài)號(hào),1至少127之間的任意整數(shù)。如果在多個(gè)位置引發(fā)相同的用戶自定義錯(cuò)誤,則針對(duì)每個(gè)位置使用唯一的狀態(tài)好有助于找到引發(fā)錯(cuò)誤的代碼段。
  • argument:用于代替msg_str或?qū)?yīng)于msg_id的消息中的定義的變量的參數(shù)??梢杂?個(gè)或多個(gè)替代參數(shù),但是替代參數(shù)的總數(shù)不能超過20個(gè)。
  • option:錯(cuò)誤的自定義選項(xiàng)。LOG:在SQLServer數(shù)據(jù)庫引擎實(shí)例的錯(cuò)誤日志和應(yīng)用程序日志中記錄錯(cuò)誤;NOWAIT:將消息立即發(fā)送給客戶端;SETERROR:將@@ERROR值和ERROR_NUMBER值設(shè)置為msg_id或50000,不用考慮嚴(yán)重級(jí)別。

到此這篇關(guān)于SQL Server中實(shí)現(xiàn)錯(cuò)誤處理的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SQL Server索引碎片的原因和修復(fù)

    SQL Server索引碎片的原因和修復(fù)

    索引碎片會(huì)影響數(shù)據(jù)庫性能,主要有邏輯碎片和物理碎片兩種類型,邏輯碎片導(dǎo)致數(shù)據(jù)頁順序不連續(xù),而物理碎片影響磁盤讀取性能,解決方法包括重建或重組索引,以及定期維護(hù),下面就一起來看一下
    2024-09-09
  • SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等代碼示例

    SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等代碼示例

    SQL Server是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可以使用SQL語言來查詢表結(jié)構(gòu),這篇文章主要給大家介紹了關(guān)于SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • SQL Server Alert發(fā)送告警郵件少了的原因

    SQL Server Alert發(fā)送告警郵件少了的原因

    這篇文章主要為大家詳細(xì)介紹了SQL Server Alert發(fā)送告警郵件少了的原因,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MS sqlserver 2008數(shù)據(jù)庫轉(zhuǎn)換成2000版本的方法

    MS sqlserver 2008數(shù)據(jù)庫轉(zhuǎn)換成2000版本的方法

    這篇文章主要為大家詳細(xì)介紹了MS sqlserver 2008數(shù)據(jù)庫轉(zhuǎn)換成2000版本的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • SQLServer 常用語句(按功能分)

    SQLServer 常用語句(按功能分)

    簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的 表或視圖、以及搜索條件等。
    2009-08-08
  • sqlServer使用ROW_NUMBER時(shí)不排序的解決方法

    sqlServer使用ROW_NUMBER時(shí)不排序的解決方法

    ROW_NUMBER必須指寫over (order by **),有時(shí)我根本就不想排序,想按原始順序,那么就可以參考下面的方法
    2013-06-06
  • SQL Server UPDATE語句的用法詳解

    SQL Server UPDATE語句的用法詳解

    SQL Server中的數(shù)據(jù)改動(dòng)是免不了的,使用UPDATE語句就可以實(shí)現(xiàn)我們對(duì)數(shù)據(jù)庫數(shù)據(jù)的更新修改操作,下面就讓我們來了解一下UPDATE語句的用法
    2014-08-08
  • 將Sql Server對(duì)象的當(dāng)前擁有者更改成目標(biāo)擁有者

    將Sql Server對(duì)象的當(dāng)前擁有者更改成目標(biāo)擁有者

    將Sql Server對(duì)象的當(dāng)前擁有者更改成目標(biāo)擁有者...
    2006-10-10
  • SQL SERVER 2012新增函數(shù)之邏輯函數(shù)IIF

    SQL SERVER 2012新增函數(shù)之邏輯函數(shù)IIF

    這篇文章主要介紹了關(guān)于SQL SERVER 2012新增函數(shù)之邏輯函數(shù)IIF的相關(guān)資料,網(wǎng)上關(guān)于邏輯函數(shù)IIF的資料比較少,本文中的介紹的還是相對(duì)詳細(xì)的,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • SQL語法 分隔符理解小結(jié)

    SQL語法 分隔符理解小結(jié)

    單引號(hào)和雙引號(hào)之間的區(qū)別最早在SQL92標(biāo)準(zhǔn)中引入的。對(duì)于標(biāo)識(shí)符,這個(gè)標(biāo)準(zhǔn)區(qū)分了常規(guī)標(biāo)識(shí)符和分隔的標(biāo)識(shí)符。
    2009-10-10

最新評(píng)論

东阳市| 环江| 白河县| 兰考县| 札达县| 肇东市| 临江市| 呼和浩特市| 山阳县| 绥滨县| 出国| 治县。| 南安市| 蒙自县| 淄博市| 彰化县| 新巴尔虎右旗| 富阳市| 枝江市| 新昌县| 花莲市| 长葛市| 沧州市| 靖宇县| 花莲县| 苍南县| 昌江| 巴塘县| 图们市| 合作市| 横峰县| 资溪县| 洛隆县| 尚志市| 靖宇县| 抚州市| 汤原县| 友谊县| 龙门县| 郎溪县| 长丰县|