我有一个名为employee的表格,有两列,并创建了两个功能来进行插入和更新操作。这两个功能将通过另一个名为udf_3()的函数来调用。
我想在第三个函数上做异常处理,即udf_3()
,应该提供给我哪个函数出错的详细信息。
--表格:employee
create table employee
(
id int,
name varchar(10)
);
--功能 1: udf_1()
用于插入。
create or replace function udf_1()
returns void as
$body$
begin
insert into employee values(1,'Mak');
end;
$body$
language plpgsql;
--功能 2: udf_2()
用于更新。
create or replace function udf_2()
returns void as
$body$
begin
update employee
set a_id = 99
where name = 'Mak';
end;
$body$
language plpgsql;
--函数 3:udf_3()
用于调用以上所有函数。
create or replace function udf_3()
returns int as
$body$
begin
perform udf_1();
perform udf_2();
return 0;
exception
when others then
RAISE INFO 'Error Name:%',SQLERRM;
RAISE INFO 'Error State:%', SQLSTATE;
return -1;
end;
$body$
language plpgsql;
--函数调用:
select * from udf_3();
异常:
INFO: Error Name:column "a_id" of relation "employee" does not exist
INFO: Error State:42703
问题:我能够得到异常但是无法知道哪个函数抛出了异常。