俘获错误 本页介绍天翼云TeleDB数据库PL/pgsql控制结构中的错误俘获处理和相关信息。 错误俘获处理 teledb CREATE TABLE texception (id integer not null,nc text); CREATE TABLE teledb create unique index texceptioniduidx on texception using btree(id); CREATE INDEX teledb CREATE OR REPLACE FUNCTION f27(aid integer,anc text) RETURNS TEXT AS teledb $$ teledb$ BEGIN teledb$ INSERT INTO texception VALUES(aid,anc); teledb$ RETURN ''; teledb$ EXCEPTION WHEN OTHERS THEN teledb$ RETURN '执行出错'; teledb$ END; teledb$ $$ teledb LANGUAGE plpgsql; CREATE FUNCTION teledb SELECT f27(1,'teledbpg'); f27 (1 row) teledb SELECT f27(1,'teledbpg'); f27 执行出错 (1 row) 获取错误相关信息 teledb CREATE OR REPLACE FUNCTION f27(aid integer,anc text) RETURNS TEXT AS teledb $$ teledb$ DECLARE teledb$ vsqlstate text; teledb$ vcontext text; teledb$ vmessagetext text; teledb$ BEGIN teledb$ INSERT INTO texception VALUES(aid,anc); teledb$ RETURN ''; teledb$ EXCEPTION WHEN OTHERS THEN teledb$ GET STACKED DIAGNOSTICS vsqlstate RETURNEDSQLSTATE, teledb$ vmessagetext MESSAGETEXT, teledb$ vcontext PGEXCEPTIONCONTEXT; teledb$ RAISE NOTICE '错误代码 : %',vsqlstate; teledb$ RAISE NOTICE '出错信息 : %',vmessagetext; teledb$ RAISE NOTICE '发生异常语句 : %',vcontext; teledb$