У меня есть основная функция, например, ниже, которая вызывает дочерние функции, как показано ниже.
Как полностью выйти из мастер-функции при сбое одной из дочерних функций?
CREATE OR REPLACE FUNCTION process_hide(
IN p_hide_date character varying,
IN p_hidedatexml character varying,
IN p_cmp integer,
IN p_taxin_no character varying) RETURNS VOID AS $$
BEGIN
PERFORM fn_hide_location(p_hide_date,p_cmp,p_taxin_no);
PERFORM fn_hide_swlist(p_hide_date,p_cmp,p_taxin_no);
PERFORM fn_hide_swruns(p_hidedatexml,p_cmp,p_taxin_no);
PERFORM fn_hide_swdudes(p_hide_date,p_cmp,p_taxin_no);
PERFORM fn_hide_chapter(p_hide_date,p_cmp,p_taxin_no);
END;
$$ LANGUAGE plpgsql
COST 100;
Дочерние функции, вызываемые внутри "мастер-функции", по существу выполняют следующее
- У меня есть список идентификаторов из другого источника, который подается во временную таблицу
- Затем существующие записи должны быть помечены определенным значением, скажем «hideme», которое соответствует идентификаторам ввременная таблица.
- У меня есть другая таблица, в которой есть счет до и после обновления.
- Я записываю в эту таблицу подсчет всех записей до обновления и после обновления.
- если количество не совпадает, выйдите из функции