实例
CREATE or replace FUNCTION func_test() RETURNS int AS $$
declare
x int=0;
y int=0;
text_var1 varchar;
text_var2 varchar;
text_var3 varchar;
BEGIN
x := x + 1;
y := x / 0;
EXCEPTION
when others then
GET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,
text_var2 = PG_EXCEPTION_DETAIL,
text_var3 = PG_EXCEPTION_HINT;
raise notice 'text_var1=%',text_var1;
raise notice 'text_var2=%',text_var2;
raise notice 'text_var3=%',text_var3;
RETURN x;
END;
$$ LANGUAGE plpgsql;
结果
postgres=# select * from func_test();
NOTICE: text_var1=division by zero
NOTICE: text_var2=
NOTICE: text_var3=
func_test
-----------
1
(1 row)