| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 35. PL/pgSQL - SQL 過程語言 | Fast Forward | Next |
利用RAISE語句報告訊息以及拋出錯誤。
RAISE level 'format' [, variable [, ...]];可能的級別有DEBUG(向伺服器日誌寫訊息), LOG(向伺服器日誌寫訊息,優先級更高),INFO, NOTICE和WARNING (把訊息寫到伺服器日誌以及轉發到客戶端應用,優先級逐步升高)和 EXCEPTION拋出一個錯誤(通常退出目前交易)。 某個優先級別的訊息是報告給客戶端還是寫到伺服器日誌, 還是兩個都做是由 log_min_messages 和 client_min_messages 配置變量控制的。 參閱 Section 16.4 獲取更多細節。
在格式字串裡,% 被下一個可選參數的外部資料表現形式代替。 要發出一個文本的 %,您要寫 %%。 請注意可選的參數必須是簡單的變量,不能是資料表達式,而且格式必須是一個簡單的字串文本。
在這個例子裡,v_job_id的值將代替字串中的%:
RAISE NOTICE 'Calling cs_create_job(%)',v_job_id;
這個例子將會帶著給出的錯誤訊息退出交易:
RAISE EXCEPTION 'Inexistent ID --> %',user_id;
RAISE EXCEPTION 目前總是生成同樣的 SQLSTATE 代碼,P0001, 不管調用它的訊息是什麼。我們可以用 EXCEPTION ... WHEN RAISE_EXCEPTION THEN ... 捕獲這樣的例外,但是我們無法從一個 RAISE 裡告訴另外一個相關的狀態。