我想将错误写入Postgresql中的文件,因此每当函数发生错误时它会写入文件,所以我捕获了错误并将错误传递给另一个函数并返回该函数到一个文件。下面是一个示例函数,
CREATE OR REPLACE FUNCTION test(TEXT)
RETURNS VOID
STRICT
LANGUAGE plpgsql
AS $$
declare STATEMENT TEXT;
declare sql_code TEXT;
BEGIN
BEGIN
EXECUTE 'DROP TABLE ' || $1;
EXCEPTION WHEN others THEN
sql_code := SQLERRM;
STATEMENT := 'COPY (select * from test1('''||sql_code||''')) to ''/tmp/errors.txt''';
EXECUTE STATEMENT;
RETURN;
END;
RAISE NOTICE 'Dropped table successfully %', $1;
RETURN;
END;
$$;
CREATE OR REPLACE FUNCTION test1(TEXT)
RETURNS TEXT
STRICT
LANGUAGE plpgsql
AS $$
declare error TEXT;
BEGIN
error := $1;
RETURN STATEMENT;
END;
$$;
这个工作正常但我想知道是否有任何好方法来捕获错误并将其记录到文件中?请建议。
答案 0 :(得分:0)
更改日志记录级别会更好,但可能有充分理由阻止这种情况。
如果没有,你可以在pl / perlu或pl / python中编写一个辅助日志记录例程,它可以写入文件。请注意,不要覆盖数据文件O.o .....