俘获错误 本页介绍天翼云TeleDB数据库存储过程开发的错误俘获处理和获取错误相关信息的语法。 错误俘获处理 teledb CREATE OR REPLACE PROCEDURE pexception(aid integer,anc text) AS $$ BEGIN INSERT INTO texception VALUES(aid,anc); RETURN ; EXCEPTION WHEN OTHERS THEN RAISE NOTICE '执行出错'; END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb teledb CALL pexception(1,'Teledb'); CALL teledb CALL pexception(1,'Teledb'); NOTICE: 执行出错 CALL 获取错误相关信息 teledb CREATE OR REPLACE PROCEDURE pexceptionerror(aid integer,anc text) AS $$ DECLARE vsqlstate text; vcontext text; vmessagetext text; BEGIN INSERT INTO texception VALUES(aid,anc); RETURN ; EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS vsqlstate RETURNEDSQLSTATE, vmessagetext MESSAGETEXT, vcontext PGEXCEPTIONCONTEXT; RAISE NOTICE '错误代码 : %',vsqlstate; RAISE NOTICE '出错信息 : %',vmessagetext; RAISE NOTICE '发生异常语句 : %',vcontext; raise notice '错误代码 : % n出错信息 : % 发生异常语句 : %',vsqlstate ,vmessagetext,vcontext; END; $$ LANGUAGE plpgsql; CREATE PROCEDURE teledb CALL pexceptionerror(2,'Teledb'); CALL teledb CALL pexceptionerror(2,'Teledb'); NOTICE: 错误代码 : 23505 NOTICE: 出错信息 : node:dn001, backendpid:16204, nodename:dn001,backendpid:16204,message:duplicate key value violates unique constraint "texceptioniduidx" NOTICE: 发生异常语句 : SQL statement "INSERT INTO texception VALUES(aid,anc)" PL/pgSQL function pexceptionerror(integer,text) line 7 at SQL statement NOTICE: 错误代码 : 23505 n出错信息 : node:dn001, backendpid:16204, nodename:dn001,backendpid:16204,message:duplicate key value violates unique constraint "texceptioniduidx" 发生异常语句 : SQL statement "INSERT INTO texception VALUES(aid,anc)" PL/pgSQL function pexceptionerror(integer,text) line 7 at SQL statement CALL teledb