濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > SQL Server 中 RAISERROR 的用法詳細(xì)介紹

SQL Server 中 RAISERROR 的用法詳細(xì)介紹

熱門(mén)標(biāo)簽:電銷(xiāo)機(jī)器人虛擬號(hào)碼 海南自動(dòng)外呼系統(tǒng)價(jià)格 舞鋼市地圖標(biāo)注app 松原導(dǎo)航地圖標(biāo)注 創(chuàng)業(yè)電銷(xiāo)機(jī)器人 九鹿林外呼系統(tǒng)怎么收費(fèi) 浙江地圖標(biāo)注 滄州營(yíng)銷(xiāo)外呼系統(tǒng)軟件 沈陽(yáng)智能外呼系統(tǒng)代理

 SQL Server 中 RAISERROR 的用法

raiserror 的作用: raiserror 是用于拋出一個(gè)錯(cuò)誤。[ 以下資料來(lái)源于sql server 2005的幫助 ]

其語(yǔ)法如下:

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

簡(jiǎn)要說(shuō)明一下:

  第一個(gè)參數(shù):{ msg_id | msg_str | @local_variable }

      msg_id:表示可以是一個(gè)sys.messages表中定義的消息代號(hào);
              使用 sp_addmessage 存儲(chǔ)在 sys.messages 目錄視圖中的用戶定義錯(cuò)誤消息號(hào)。
              用戶定義錯(cuò)誤消息的錯(cuò)誤號(hào)應(yīng)當(dāng)大于 50000。

     msg_str:表示也可以是一個(gè)用戶定義消息,該錯(cuò)誤消息最長(zhǎng)可以有 2047 個(gè)字符;
             (如果是常量,請(qǐng)使用N'xxxx',因?yàn)槭莕varchar的)
              當(dāng)指定 msg_str 時(shí),RAISERROR 將引發(fā)一個(gè)錯(cuò)誤號(hào)為 5000 的錯(cuò)誤消息。

     @local_variable:表示也可以是按照 msg_str 方式的格式化字符串變量。           

第二個(gè)參數(shù):severity

           用戶定義的與該消息關(guān)聯(lián)的嚴(yán)重級(jí)別。(這個(gè)很重要)
            任何用戶都可以指定 0 到 18 之間的嚴(yán)重級(jí)別。
            [0,10]的閉區(qū)間內(nèi),不會(huì)跳到catch;
            如果是[11,19],則跳到catch;
            如果[20,無(wú)窮),則直接終止數(shù)據(jù)庫(kù)連接;

第三個(gè)參數(shù):state

            如果在多個(gè)位置引發(fā)相同的用戶定義錯(cuò)誤,
            則針對(duì)每個(gè)位置使用唯一的狀態(tài)號(hào)有助于找到引發(fā)錯(cuò)誤的代碼段。
         
            介于 1 至 127 之間的任意整數(shù)。(state 默認(rèn)值為1)
            當(dāng)state 值為 0 或大于 127 時(shí)會(huì)生成錯(cuò)誤!

第四個(gè)參數(shù):argument

            用于代替 msg_str 或?qū)?yīng)于 msg_id 的消息中的定義的變量的參數(shù)。

第五個(gè)參數(shù):option

            錯(cuò)誤的自定義選項(xiàng),可以是下表中的任一值:
            LOG :在錯(cuò)誤日志和應(yīng)用程序日志中記錄錯(cuò)誤;
            NOWAIT:將消息立即發(fā)送給客戶端;
            SETERROR:將 @@ERROR 值和 ERROR_NUMBER 值設(shè)置為 msg_id 或 50000;

[SQL]代碼示例

--示例1

DECLARE @raiseErrorCode nvarchar(50)
SET @raiseErrorCode = CONVERT(nvarchar(50), YOUR UNIQUEIDENTIFIER KEY)
RAISERROR('%s INVALID ID. There is no record in table',16,1, @raiseErrorCode)
 

--示例2

RAISERROR (
       N'This is message %s %d.', -- Message text,
       10,            -- Severity,
       1,             -- State,
       N'number',         -- First argument.
       5             -- Second argument.
     ); 
-- The message text returned is: This is message number 5.
GO

--示例3

RAISERROR (N'%*.*s>>', -- Message text.
      10,      -- Severity,
      1,      -- State,
      7,      -- First argument used for width.
      3,      -- Second argument used for precision.
      N'abcde');  -- Third argument supplies the string.
-- The message text returned is:   abc>>.
GO

--示例4

RAISERROR (N'%7.3s>>', -- Message text.
      10,      -- Severity,
      1,      -- State,
      N'abcde');  -- First argument supplies the string.
-- The message text returned is:   abc>>.
GO

--示例5   

--A. 從 CATCH 塊返回錯(cuò)誤消息

以下代碼示例顯示如何在 TRY 塊中使用 RAISERROR 使執(zhí)行跳至關(guān)聯(lián)的 CATCH 塊中。
它還顯示如何使用 RAISERROR 返回有關(guān)調(diào)用 CATCH 塊的錯(cuò)誤的信息。


BEGIN TRY
  RAISERROR ('Error raised in TRY block.', -- Message text.
        16, -- Severity.
        1 -- State.
        );
END TRY
BEGIN CATCH
  DECLARE @ErrorMessage NVARCHAR(4000);
  DECLARE @ErrorSeverity INT;
  DECLARE @ErrorState INT;

  SELECT 
    @ErrorMessage = ERROR_MESSAGE(),
    @ErrorSeverity = ERROR_SEVERITY(),
    @ErrorState = ERROR_STATE();

  RAISERROR (@ErrorMessage, -- Message text.
        @ErrorSeverity, -- Severity.
        @ErrorState   -- State.
        );
END CATCH;

--示例6

--B. 在 sys.messages 中創(chuàng)建即席消息
以下示例顯示如何引發(fā) sys.messages 目錄視圖中存儲(chǔ)的消息。
該消息通過(guò) sp_addmessage 系統(tǒng)存儲(chǔ)過(guò)程,以消息號(hào)50005添加到 sys.messages 目錄視圖中。


sp_addmessage @msgnum = 50005,
        @severity = 10,
        @msgtext = N'%7.3s>>';
GO

RAISERROR (50005, -- Message id.
      10,  -- Severity,
      1,   -- State,
      N'abcde'); -- First argument supplies the string.
-- The message text returned is:   abc>>.
GO

sp_dropmessage @msgnum = 50005;
GO

--示例7

--C. 使用局部變量提供消息文本
以下代碼示例顯示如何使用局部變量為 RAISERROR 語(yǔ)句提供消息文本。

sp_addmessage @msgnum = 50005,
       @severity = 10,
       @msgtext = N'%7.3s>>';
GO

RAISERROR (50005, -- Message id.
      10,  -- Severity,
      1,   -- State,
      N'abcde'); -- First argument supplies the string.
-- The message text returned is:   abc>>.
GO

sp_dropmessage @msgnum = 50005;
GO

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • SQL Server自定義異常raiserror使用示例
  • sql server數(shù)據(jù)庫(kù)中raiserror函數(shù)用法的詳細(xì)介紹

標(biāo)簽:西藏 臺(tái)灣 公主嶺 商洛 寶雞 日喀則 咸寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 中 RAISERROR 的用法詳細(xì)介紹》,本文關(guān)鍵詞  SQL,Server,中,RAISERROR,的,用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server 中 RAISERROR 的用法詳細(xì)介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQL Server 中 RAISERROR 的用法詳細(xì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    樟树市| 达拉特旗| 依兰县| 黑山县| 讷河市| 永兴县| 雅安市| 商水县| 巩留县| 瓦房店市| 南华县| 凌源市| 荥阳市| 吉隆县| 文成县| 通山县| 德州市| 海口市| 荥经县| 读书| 聊城市| 平邑县| 阿拉尔市| 荥阳市| 上虞市| 虞城县| 岐山县| 清新县| 赣榆县| 新蔡县| 赫章县| 仁化县| 博兴县| 渭源县| 兰坪| 兴海县| 高碑店市| 色达县| 尚义县| 岢岚县| 金乡县|