обработка ошибок postgress из функции

#postgresql #error-handling

#postgresql #обработка ошибок

Вопрос:

Я пытаюсь запустить функцию, которая запускает другие функции, и фиксировать ошибки на случай, если одна или несколько функций выйдут из строя. Функция выглядит следующим образом (я удалил ненужные части):

 CREATE OR REPLACE FUNCTION func()
 RETURNS void
 LANGUAGE plpgsql
AS $function$

BEGIN
cur_time:=now();
    FOR r IN select func_num FROM mytable order by func_num
    LOOP

        select schema , function_name, last_run, period into _schema, _func_name,_last_run, _period  from mytable
       ;

        if _last_run _period <=cur_time then perform _schema||'.'||_func_name||'()' ; end if;


        EXCEPTION WHEN OTHERS THEN

            RAISE NOTICE 'exception (code=%): %', SQLCODE, SQLERRM;           
            _error:=SQLCODE; 

            if _last_run _period >=cur_time then update mytable set error=_error where schema=_schema and function_name=_func_name; end if;

    END LOOP;

    RETURN;

END;
  

Я получаю следующую ошибку: «ОШИБКА: ОШИБКА: синтаксическая ошибка в «ИСКЛЮЧЕНИИ» или рядом с ним», и я не могу ее найти:((

Буду признателен за любую помощь!

Ответ №1:

Если вы прочитаете соответствующую часть руководств, вы увидите, что вам нужно НАЧАТЬ… ИСКЛЮЧЕНИЕ

 ...
LOOP
  BEGIN
  ...
  EXCEPTION
  ...
  END;
END LOOP;