在PostgreSQL 9.6中。
我具有创建临时外部服务器的功能。我先使用它,然后尝试删除它。
但是,当我尝试在删除服务器调用之后立即引发异常时,不会删除服务器。如果我注释掉引发异常,那么将删除外部服务器。
这样做,未删除外部服务器 :
if (errcondition=true) then
func_delete_server(srv_name);
raise exception '%', 'an error happened';
end if;
这样做,将删除外部服务器
if (errcondition=true) then
func_delete_server(srv_name);
--raise exception '%', 'an error happened';
end if;
func_delete_server
仅包含一个drop server
语句。
我在这里想念什么?
答案 0 :(得分:0)
对于您的情况,raise exception
并不是通知正在调用此函数的使用者的好方法。
引发异常(raise exception
)并不是一种好方法,在这种情况下,您希望在通知之前完成一些工作,而这又是交易规则。
您只需要调用RETURN
即可终止函数或在RETURN中包含一些布尔变量。
基本上,这完全取决于您声明功能的方式。