Показать результат шага pgAgent
Как настроить шаг pgAgent так Result
или же Output
показать количество строк, обработанных в моей функции?
моя функция уже возвращает количество затронутых строк, но это не значение, показанное в Result
,
BEGIN
WHILE int_pending > 0 LOOP
.....
UPDATE table SET ....
GET DIAGNOSTICS int_row_count = ROW_COUNT;
int_total = int_total + int_row_count;
END LOOP;
RETURN int_total;
END;
1 ответ
Согласно исходному коду pgagent:
output = stepConn->GetLastError();
...
rc = threadConn->ExecuteVoid(
wxT("UPDATE pgagent.pga_jobsteplog ")
wxT(" SET jslduration = now() - jslstart, ")
wxT(" jslresult = ") + NumToStr(rc) + wxT(", jslstatus = '") + stepstatus + wxT("', ")
wxT(" jsloutput = ") + threadConn->qtDbString(output) + wxT(" ")
wxT(" WHERE jslid=") + jslid);
pgagent хранит последнюю ошибку выполнения шага задания.
Итак, есть два способа реализовать желаемое поведение:
- исправление исходного кода для реализации вашей функции, перекомпиляции, установки и использования этой пользовательской версии
использование
RAISE EXCEPTION
внутри функции plpgsql, что-то вроде этого:CREATE OR REPLACE FUNCTION test_output() RETURNS VOID AS $$ DECLARE rows int := 25; BEGIN RAISE EXCEPTION 'Updated rows: %', rows; END; $$ LANGUAGE PLPGSQL;