<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 40.8\. 錯誤和消息 利用`RAISE`語句報告信息以及拋出錯誤。 ``` RAISE [ `_level_` ] '_format_' [, `_expression_` [, ... ]] [ USING `_option_` = `_expression_` [, ... ] ]; RAISE [ `_level_` ] _condition_name_ [ USING `_option_` = `_expression_` [, ... ] ]; RAISE [ `_level_` ] SQLSTATE '_sqlstate_' [ USING `_option_` = `_expression_` [, ... ] ]; RAISE [ `_level_` ] USING _option_ = _expression_ [, ... ]; RAISE ; ``` `_level_`選項聲明了錯誤的嚴重性等級。 可能的級別有`DEBUG`,`LOG`, `INFO`, `NOTICE`, `WARNING`, 和`EXCEPTION`,默認的是`EXCEPTION`。 `EXCEPTION`會拋出一個錯誤(強制關閉當前事務), 而其他級別僅僅是產生不同的優先級信息。 無論是將優先級別的信息是報告給客戶端,還是寫到服務器日志,亦或是二者都是, 都是由[log_min_messages](#calibre_link-1449)和[client_min_messages](#calibre_link-1448)配置變量控制的。 參閱[Chapter 18](#calibre_link-500)獲取更多細節。 如果真有的話,在`_level_`之后, 你可以寫`_format_`, (這必須是一個簡單的字符串文本,而不是表達式)。 格式字符串聲明要報告的錯誤信息文本。 格式字符串可以遵循插入到信息中的可選參數表達式。 在格式字符串里,`%`被下一個可選參數的外部表現形式代替。 要表示`%`字符必須發出(`%%`)。 在這個例子里,`v_job_id`的值將代替字符串中的`%`: ``` RAISE NOTICE 'Calling cs_create_job(%)', v_job_id; ``` 你可以通過在`_option_` = `_expression_`項后邊寫`USING`來附加額外信息到錯誤報告中。 每一個`_expression_`可以是任何字符串值表達式。 允許的`_option_`關鍵字是: `MESSAGE` 設置錯誤消息文本。這個選項不能用于包含`USING`之前的格式字符串 的`RAISE`形式中。 `DETAIL` 提供一個錯誤詳細信息。 `HINT` 提供提示信息。 `ERRCODE` 指定錯誤代碼(SQLSTATE)用來報告,通過條件名, 如[Appendix A](#calibre_link-120),或直接作為 五個字符的SQLSTATE代碼。 `COLUMN``CONSTRAINT` `DATATYPE` `TABLE` `SCHEMA` 提供一個相關對象名稱。 該例子會強制退出事務,并返回如下提示: ``` RAISE EXCEPTION 'Nonexistent ID --> %', user_id USING HINT = 'Please check your user ID'; ``` 下面兩個例子在設置SQLSTATE方面具有相同的作用: ``` RAISE 'Duplicate user ID: %', user_id USING ERRCODE = 'unique_violation'; RAISE 'Duplicate user ID: %', user_id USING ERRCODE = '23505'; ``` 這是第二個`RAISE`語法,其中主要參數是條件名字或者要報告的SQLSTATE,比如: ``` RAISE division_by_zero; RAISE SQLSTATE '22012'; ``` 在這個語法中,`USING`可以來提供一個通用的錯誤信息,詳情,或者提示。另一個較早的例子是: ``` RAISE unique_violation USING MESSAGE = 'Duplicate user ID: ' || user_id; ``` 另一個變形是 寫`RAISE USING`或者`RAISE``_level_` USING, 然后將其他的所有東西都放在`USING`列中。 最后一個`RAISE`變形中沒有任何參數。 這種形式只能在`BEGIN`塊的`EXCEPTION`字句中使用。 它的作用是將正在處理的錯誤放到下一個封閉的塊中。 > **Note:** 在PostgreSQL 9.1之前, 沒有參數的`RAISE`被解釋為 包含有活躍異常處理程序的塊中重新拋出錯誤。 因此,`EXCEPTION`子句嵌套在該處理器中無法抓取它,即使 `RAISE`在嵌套的`EXCEPTION`子句塊中。 這被認為是令人驚訝并且不兼容Oracle的PL/SQL。 如果`RAISE EXCEPTION`中沒有聲明SQLSTATE的情形名稱, 那么缺省使用`RAISE_EXCEPTION` (`P0001`)。 如果沒有聲明信息文本,那么缺省將情形名稱或SQLSTATE作為信息文本。 > **Note:** 當通過SQLSTATE編碼聲明一個錯誤代碼時,你不能限制預定義錯誤代碼, 但是可以選擇任何由五個數字和/或者大寫ASCII字母組成的錯誤代碼, 而不是`00000`。建議避免拋出以三個零結尾的錯誤代碼,因為 這些是類別碼并且只能通過捕獲整個類別來獲取。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看