乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

      sql server數(shù)據(jù)庫中raiserror函數(shù)用法的詳細介紹

       2020-11-26 15:21  來源: 腳本之家   我來投稿 撤稿糾錯

        阿里云優(yōu)惠券 先領券再下單

      這篇文章主要介紹了sql server數(shù)據(jù)庫中raiserror函數(shù)用法的詳細介紹,raiserror用于拋出一個異?;蝈e誤,讓這個錯誤可以被程序捕捉到。對此感興趣的可以了解一下

      sql server數(shù)據(jù)庫中raiserror函數(shù)的用法

      server數(shù)據(jù)庫中raiserror的作用就和asp.NET中的throw new Exception一樣,用于拋出一個異?;蝈e誤。這個錯誤可以被程序捕捉到。

      raiserror的常用格式如下:

      raiserror('錯誤的描述',錯誤的嚴重級別代碼,錯誤的標識,錯誤的描述中的參數(shù)的值(這個可以是多個),一些其它參數(shù)),在官方上的格式描述如下:

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

      其中,[ ,argument [ ,...n ] ]與 [ WITH option [ ,...n ] 兩項是可以不寫的。

      分別解釋一下各參數(shù)的用法:

      一、{ msg_id | msg_str | @local_variable }

      從這個參數(shù)中可以看出,這一項可能為三個值,

      1,sys.messages中的自定義錯誤信息的錯誤信息號,自定義錯誤信息可以使用sp_addmessage存儲過程添加到sys.messages中,注意, 用戶定義錯誤消息的錯誤號應當大于 50000。

      示例:raiserror(50001,16,1)

      2,一條直接的錯誤描述,示例:raiserror('這里是錯誤描述的示例',16,1)

      3,一個包含錯誤描述變量,示例:

      declare @error_mes varchar(1000)
      set @error_mes='這里是錯誤描述的示例'
      raiserror(@error_mes,16,1)

      二、severity

      這個參數(shù)為用戶定義的該錯誤信息的級別,我們可以指定 0 到 18 之間的嚴重級別。只有 sysadmin 固定服務器角色成員或具有 ALTER TRACE 權限的用戶才能指定 19 到 25 之間的嚴重級別。若要使用 19 到 25 之間的嚴重級別,必須選擇 WITH LOG 選項。

      注意,如果錯誤級別在20~25之間,那么數(shù)據(jù)庫會認為這個錯誤是致命,那么數(shù)據(jù)庫會將該錯誤記錄到錯誤日志和應用程序日志后終止數(shù)據(jù)庫的連接。任何小于 0 的嚴重級別被認為等于0。大于 25 的嚴重級別被認為等于25。

      三、state

      這個參數(shù)是可以是1~127之間任意整數(shù),可以用來標識錯誤的發(fā)生位置,如果一段代碼的多個位置都會發(fā)生同樣的錯誤,那么就可以將這個參數(shù)設置為不同的值,用來標識是那個位

      置發(fā)生錯誤了。

      四、[ ,argument [ ,...n ] ]

      如果參數(shù){ msg_id | msg_str | @local_variable }中包含了一些代替符,那么這個參數(shù)就是代替符的具體的值,這個和asp.Net中的string.Format用法是一樣的。示例如下:

      declare @error_mes varchar(1000)
      set @error_mes='這里是用戶%s引發(fā)的錯誤描述'
      raiserror(@error_mes,16,1,'張三')

      也可以是這樣,可能適用性更廣些。

      declare @error_mes varchar(1000)
      declare @error_obj varchar(1000)
      select @error_obj=name from table_users where……
      set @error_mes='這里是用戶%s引發(fā)的錯誤描述'
      raiserror(@error_mes,16,1,@error_obj)

      上面代碼中的%s,代表它要替代是一個字符串,如果我們把示例寫成下面這樣就會報錯了:

      declare @error_mes varchar(1000)
      set @error_mes='這里是用戶%s引發(fā)的錯誤描述'
      raiserror(@error_mes,16,1,1)

      因為1不是一個字符串,如果要替代是一個整數(shù),就需要使用%i或者%d了。所有的對應關系如下:

      1,%d或%i代表有符號整數(shù)

      2,%u代表無符號整數(shù)

      3,%o代表無符號八進制數(shù)

      4,%s代表字符串

      5,%x或%X代表 無符號十六進制數(shù)

      五、[ WITH option [ ,...n ] ]

      該參數(shù)為錯誤的自定義選項,可以是下面三個值中的一個:

      1,LOG--在 Microsoft SQL Server 數(shù)據(jù)庫引擎 實例的錯誤日志和應用程序日志中記錄錯誤。記錄到錯誤日志的錯誤目前被限定為最多 440 字節(jié)。只有 sysadmin 固定服務器角色

      成員或具有 ALTER TRACE 權限的用戶才能指定 WITH LOG。

      2,NOWAIT--將消息立即發(fā)送給客戶端。

      3,SETERROR--將 @@ERROR 值和 ERROR_NUMBER 值設置為 msg_id 或 50000,不用考慮嚴重級別。

      我們還可以在Begin catch中使用raiserror。示例如下:

      begin try
       raiserror('這是一個錯誤',16,1) //注意,只有severity級別在11~19之間,控制才會跳轉到catch塊中。
      end try
      begin catch
       declare @error_message varchar(1000)
       set @error_message=error_message()
       raiserror(@error_message,16,1)
       return
      end catch

      到此這篇關于sql server數(shù)據(jù)庫中raiserror函數(shù)用法的詳細介紹的文章就介紹到這了,更多相關sql server中raiserror函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

      來源:腳本之家

      鏈接:https://www.jb51.net/article/190790.htm

      申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

      相關標簽
      sqlserver
      用法

      相關文章

      熱門排行

      信息推薦