postgresql - Postgresql - 在另一个函数中执行函数并在错误时恢复下一个
问题描述
我在 Postgresql 9.3 中有 2 个函数:
CREATE OR REPLACE FUNCTION Function_A(param_id integer, param_name text)
RETURNS void AS
$BODY$
DECLARE
my_id integer;
my_name text;
BEGIN
my_id = somefunction(param_id);
my_name = somefunction(param_name);
insert into tableA(id, name) values (my_id, my_name);
END
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION Function_A(integer, text)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION Function_B(param_id bigint, param_name text)
RETURNS void AS
$BODY$
DECLARE
BEGIN
insert into tableC(id, name) values (param_id, param_name);
perform Function_A(param_id, param_name);
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION Function_B(bigint, text)
OWNER TO postgres;
所以,我有问题,当函数 A 返回错误时,函数 B 不会将数据插入表 C。
我想要这样的东西:
如果 Perform Function A 接下来返回错误 resume,那么我的 Function B 可以将数据插入表 C 并继续没有问题。
这可能吗?
解决方案
如果没有实际的 SQL 代码,我们实际上无法为您提供太多帮助。如果你想强制一个函数继续而不关心错误,那么你可以使用 SQL 异常语法
EXCEPTION WHEN OTHERS THEN
-- keep looping
END;
推荐阅读
- cron - 除了步骤条件之外,如何在无人机中使用 cron 触发器?
- javascript - 如何使用 javaScript 从对象数组中删除重复值?
- javascript - 为 img 放置一个动态 src (React/JS)
- mysql - 如何以正确的方式构建此 SQL 查询?
- mysql - 如何在 MySQL 中限制 INT?
- gradle - 在 Azure Pipelines 中复制和重命名 jar 文件
- visual-studio-code - 如何在 VSC 中指定 docker-compose 的可执行路径?
- javascript - 在 Bootstrap Vue 中动态更改选择输入
- angular - Angular Playground 设置具有封装值的样式
- java - 如何让Excel或记事本从Java中的浮动数字键盘输入数字