2
在火鳥,我們可以宣佈自定義異常,像這樣:PostgreSQL的自定義異常?
創建異常EXP_CUSTOM_0「異常:自定義異常」;
這些都存儲在數據庫級別。在存儲過程中,我們可以像這樣提出異常:
EXCEPTION EXP_CUSTOM_0;
有PostgreSQL中的相同呢?
在火鳥,我們可以宣佈自定義異常,像這樣:PostgreSQL的自定義異常?
創建異常EXP_CUSTOM_0「異常:自定義異常」;
這些都存儲在數據庫級別。在存儲過程中,我們可以像這樣提出異常:
EXCEPTION EXP_CUSTOM_0;
有PostgreSQL中的相同呢?
不,不是這樣。但是你可以提高和維護自己的異常,沒有任何問題:
CREATE TABLE exceptions(
id serial primary key,
MESSAGE text,
DETAIL text,
HINT text,
ERRCODE text
);
INSERT INTO exceptions (message, detail, hint, errcode) VALUES ('wrong', 'really wrong!', 'fix this problem', 'P0000');
CREATE OR REPLACE FUNCTION foo() RETURNS int LANGUAGE plpgsql AS
$$
DECLARE
row record;
BEGIN
PERFORM * FROM fox; -- does not exist, undefined_table, fail
EXCEPTION
WHEN undefined_table THEN
SELECT * INTO row FROM exceptions WHERE id = 1; -- get your exception
RAISE EXCEPTION USING MESSAGE = row.message, DETAIL = row.detail, HINT = row.hint, ERRCODE = row.errcode;
RETURN 1;
END;
$$
SELECT foo();
Offcourse你也可以讓他們在你的程序中的硬編碼,這是給你的。