postgres函数的错误处理

时间:2014-07-01 09:57:20

标签: postgresql error-handling

我尝试运行运行其他函数并捕获错误的函数,以防一个或几个函数失败。 功能如下(我删除了不必要的部分):

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;

我收到以下错误:“错误:错误:语法错误处于或接近”EXCEPTION“”并且我找不到它:((

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果您阅读relevant part of the manuals,您将看到您需要BEGIN ... EXCEPTION

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