2016-07-21 4 views
0

Как настроить шаг pgAgent так Result или Output показать количество строк, обработанных в моей функции?Показать результат pgAgent step

enter image description here

моя функция уже возвращает количество строк, но разве значение шоу в 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; 

ответ

0

По source code of 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; 
    
Смежные вопросы