35.9. 錯誤和消息

利用RAISE語句報告訊息以及拋出錯誤。

RAISE level 'format' [, variable [, ...]];

可能的級別有DEBUG(向伺服器日誌寫訊息), LOG(向伺服器日誌寫訊息,優先級更高),INFONOTICEWARNING (把訊息寫到伺服器日誌以及轉發到客戶端應用,優先級逐步升高)和 EXCEPTION拋出一個錯誤(通常退出目前交易)。 某個優先級別的訊息是報告給客戶端還是寫到伺服器日誌, 還是兩個都做是由 log_min_messagesclient_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 裡告訴另外一個相關的狀態。