亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >RAISERROR 創(chuàng)建者:webmaster 更新時(shí)間:2006-02-16 15:51

    返回用戶定義的錯(cuò)誤信息并設(shè)系統(tǒng)標(biāo)志,記錄發(fā)生錯(cuò)誤。通過使用 RAISERROR 語句,客戶端可以從 sysmessages 表中檢索條目,或者使用用戶指定的嚴(yán)重度和狀態(tài)信息動(dòng)態(tài)地生成一條消息。這條消息在定義后就作為服務(wù)器錯(cuò)誤信息返回給客戶端。



    語法


    RAISERROR ( { msg_id | msg_str } { , severity , state }

        [ , argument [ ,...n ] ] )

        [ WITH option [ ,...n ] ]



    參數(shù)


    msg_id



    存儲(chǔ)于 sysmessages 表中的用戶定義的錯(cuò)誤信息。用戶定義錯(cuò)誤信息的錯(cuò)誤號(hào)應(yīng)大于 50,000。由特殊消息產(chǎn)生的錯(cuò)誤是第 50,000 號(hào)。


    msg_str



    是一條特殊消息,其格式與 C 語言中使用的 PRINTF 格式樣式相似。此錯(cuò)誤信息最多可包含 400 個(gè)字符。如果該信息包含的字符超過 400 個(gè),則只能顯示前 397 個(gè)并將添加一個(gè)省略號(hào)以表示該信息已被截?cái)唷K刑囟ㄏ⒌臉?biāo)準(zhǔn)消息 ID 是 14,000。


    msg_str 支持下面的格式:


    % [[flag] [width] [precision] [{h | l}]] type


    可在 msg_str 中使用的參數(shù)包括:


    flag


    用于確定用戶定義的錯(cuò)誤信息的間距和對(duì)齊的代碼。







































    代碼前綴或?qū)R描述
    -(減)左對(duì)齊在給定字段寬度內(nèi)左對(duì)齊結(jié)果。
    +(加)+(加)或 -(減)前綴如果輸出值為帶符號(hào)類型,則在輸出值的前面加上加號(hào)(+)或減號(hào)(-)。
    0(零)零填充如果寬度的前面有 0,則添加零直到滿足最小寬度。若出現(xiàn) 0 和 -,將忽略 0。若使用整型格式(i, u, x, X, o, d)指定 0,則忽略 0。
    #(數(shù)字)對(duì) x 或 X 的十六進(jìn)制類型使用 0x 前綴當(dāng)使用 o、x 或 X 格式時(shí),# 標(biāo)志在任何非零值的前面分別加上 0、0x 或 0X。當(dāng) d、i 或 u 的前面有 # 標(biāo)記時(shí),將忽略該標(biāo)記。
    ' '(空格)空格填充如果輸出值帶符號(hào)且為正,則在該值前加空格。如果包含在加號(hào)(+)標(biāo)記中,則忽略該標(biāo)記。



    width


    定義最小寬度的整數(shù)。星號(hào) (*) 允許 precision 確定寬度。


    precision


    是輸出字段最多輸出的字符數(shù),或?yàn)檎麛?shù)值輸出的最小小數(shù)位數(shù)。星號(hào) (*) 允許 argument 確定精度。


    {h | l} type


    與字符類型 d、i、o、x、X 或 u 一起使用,用于創(chuàng)建 short int (h) 或 long int (l) 類型的值。






































    字符類型表示
    d 或 I帶符號(hào)的整數(shù)
    o不帶符號(hào)的八進(jìn)制數(shù)
    p指針型
    sString
    u不帶符號(hào)的整數(shù)
    x 或 X不帶符號(hào)的十六進(jìn)制數(shù)



    說明  不支持 float、雙精度和單精度字符類型。



    severity



    用戶定義的與消息關(guān)聯(lián)的嚴(yán)重級(jí)別。用戶可以使用從 0 到 18 之間的嚴(yán)重級(jí)別。19 到 25 之間的嚴(yán)重級(jí)別只能由 sysadmin 固定服務(wù)器角色成員使用。若要使用 19 到 25 之間的嚴(yán)重級(jí)別,必須選擇 WITH LOG 選項(xiàng)。


    注意  20 到 25 之間的嚴(yán)重級(jí)別被認(rèn)為是致命的。如果遇到致命的嚴(yán)重級(jí)別,客戶端連接將在收到消息后終止,并將錯(cuò)誤記入錯(cuò)誤日志和應(yīng)用程序日志。



    state



    從 1 到 127 的任意整數(shù),表示有關(guān)錯(cuò)誤調(diào)用狀態(tài)的信息。state 的負(fù)值默認(rèn)為 1。


    argument



    是用于取代在 msg_str 中定義的變量或取代對(duì)應(yīng)于 msg_id 的消息的參數(shù)??梢杂?0 或更多的替代參數(shù);然而,替代參數(shù)的總數(shù)不能超過 20 個(gè)。每個(gè)替代參數(shù)可以是局部變量或這些任意數(shù)據(jù)類型:int1、int2int4、charvarchar、binaryvarbinary。不支持其它數(shù)據(jù)類型。


    option



    錯(cuò)誤的自定義選項(xiàng)。option 可以是以下值之一:























    描述
    LOG將錯(cuò)誤記入服務(wù)器錯(cuò)誤日志和應(yīng)用程序日志。記入服務(wù)器錯(cuò)誤日志的錯(cuò)誤目前被限定為最多 440 字節(jié)。
    NOWAIT將消息立即發(fā)送給客戶端。
    SETERROR@@ERROR 的值設(shè)置為 msg_id 或 50000,與嚴(yán)重級(jí)別無關(guān)。



    注釋


    如果使用 sysmessages 錯(cuò)誤并且是使用前面顯示的 msg_str 格式創(chuàng)建的消息,則將給所提供的 msg_id 的消息傳遞提供的參數(shù)(argument1、argument2 等等)。



    當(dāng)使用 RAISERROR 創(chuàng)建和返回用戶定義的錯(cuò)誤信息時(shí),使用 sp_addmessage 添加用戶定義的錯(cuò)誤信息,使用 sp_dropmessage 刪除用戶定義的錯(cuò)誤信息。



    當(dāng)出現(xiàn)錯(cuò)誤時(shí),錯(cuò)誤號(hào)將放在 @@ERROR 函數(shù)中,該函數(shù)存儲(chǔ)最新生成的錯(cuò)誤號(hào)。對(duì)于嚴(yán)重級(jí)別為 1 到 10 的消息,@@ERROR 的默認(rèn)設(shè)置為0。



    示例


    A. 創(chuàng)建特定消息


    下例顯示可能出現(xiàn)的兩種錯(cuò)誤。第一種錯(cuò)誤很簡(jiǎn)單,生成的是靜態(tài)消息。第二種錯(cuò)誤則是在嘗試修改的基礎(chǔ)上動(dòng)態(tài)生成的。



    CREATE TRIGGER employee_insupd
    ON employee
    FOR INSERT, UPDATE
    AS
    /* Get the range of level for this job type from the jobs table. */
    DECLARE @@MIN_LVL tinyint,
      @@MAX_LVL tinyint,
      @@EMP_LVL tinyint,
      @@JOB_ID smallint
    SELECT @@MIN_LVl = min_lvl,
      @@MAX_LV = max_lvl,
      @@ EMP_LVL = i.job_lvl,
      @@JOB_ID = i.job_id
    FROM employee e, jobs j, inserted i
    WHERE e.emp_id = i.emp_id AND i.job_id = j.job_id
    IF (@@JOB_ID = 1) and (@@EMP_lVl <> 10)
    BEGIN
      RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
      ROLLBACK TRANSACTION
    END
    ELSE
    IF NOT @@ EMP_LVL BETWEEN @@MIN_LVL AND @@MAX_LVL)
    BEGIN
      RAISERROR ('The level for job_id:%d should be between %d and %d.',
        16, 1, @@JOB_ID, @@MIN_LVL, @@MAX_LVL)
      ROLLBACK TRANSACTION
    END


    B. 在 sysmessages 中創(chuàng)建特殊消息


    下例顯示如何通過執(zhí)行 employee_insupd 觸發(fā)器獲得與 RAISERROR 相同的效果,而 RAISERROR 使用給存儲(chǔ)在 sysmessages 表中的消息傳遞參數(shù)的方法。該消息通過 sp_addmessage 系統(tǒng)存儲(chǔ)過程,以消息號(hào) 50005 被添加到 sysmessages 表中。



    說明  下例僅供舉例說明。



    RAISERROR (50005, 16, 1, @@JOB_ID, @@MIN_LVL, @@MAX_LVL)
    相關(guān)文章
    本頁查看次數(shù):