我尝试运行运行其他函数并捕获错误的函数,以防一个或几个函数失败。 功能如下(我删除了不必要的部分):
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“”并且我找不到它:((
非常感谢任何帮助!
答案 0 :(得分:1)
如果您阅读relevant part of the manuals,您将看到您需要BEGIN ... EXCEPTION
...
LOOP
BEGIN
...
EXCEPTION
...
END;
END LOOP;