2016-07-21 5 views
0

설정 방법 pgAgent 단계 Result 또는 Output은 내 기능에서 처리 된 행 수를 표시합니까?pgAgent 단계의 결과 표시

enter image description here

내 기능은 이미 영향을받는 행의 수를 반환하지만 Result의 값 쇼를 밤은. source code of pgagent에 따르면

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

: 작업 단계 실행의

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 저장 마지막 오류.

그래서, 원하는 동작 구현하는 두 가지 방법이 있습니다 : plpgsql 기능 내부에이 사용자 정의 버전

  • 사용 RAISE EXCEPTION을, 당신의 기능을 구현 재 컴파일, 설치 및 사용

    • 패치 소스 코드를,이 같은 일이 :

      CREATE OR REPLACE FUNCTION test_output() RETURNS VOID AS $$ 
          DECLARE 
          rows int := 25; 
          BEGIN 
          RAISE EXCEPTION 'Updated rows: %', rows; 
          END; 
      $$ LANGUAGE PLPGSQL;