서버에서 생성 한 배트맨 토토 및 경고 메시지는 쿼리 실패를 암시하지 않기 때문에 쿼리 실행 함수에 의해 반환되지 않습니다. 대신 배트맨 토토 처리 기능으로 전달되며 핸들러가 반환 한 후에는 일반적으로 실행이 계속됩니다. 기본 배트맨 토토 처리 기능은 메시지를 인쇄합니다Stderr
, 그러나 응용 프로그램은 자체 취급 기능을 제공 하여이 동작을 무시할 수 있습니다.
역사적 이유로, 배트맨 토토 수신자 및 배트맨 토토 프로세서라는 두 가지 수준의 배트맨 토토 처리가 있습니다. 기본 동작은 배트맨 토토 수신자가 배트맨 토토를 포맷하고 인쇄를 위해 배트맨 토토 프로세서에 문자열을 전달하는 것입니다. 그러나 자체 배트맨 토토 수신자를 제공하기로 선택한 응용 프로그램은 일반적으로 배트맨 토토 프로세서 계층을 무시하고 배트맨 토토 수신자에서 모든 작업을 수행합니다..
함수PQSETNOTICERECEIVER
연결 객체에 대한 현재 배트맨 토토 수신자를 설정하거나 검사합니다. 비슷하게,pqsetnoticeProcessor
현재 배트맨 토토 프로세서를 설정하거나 검토합니다.
typedef void ( *pqnoticereceiver) (void *arg, const pgresult *res); PQNOTICERECEIVER pqsetnoticereceiver (pgconn *conn, PQNOTICERECEIVER PROC, void *arg); typedef void ( *pqnoticeProcessor) (void *arg, const char *message); pqnoticeprocessor pqsetnoticeprocessor (pgconn *conn, pqnoticeprocessor proc, void *arg);
이러한 각 함수는 이전 통지 수신기 또는 프로세서 함수 포인터를 반환하고 새 값을 설정합니다. NULL 기능 포인터를 제공하면 조치가 취하지 않지만 현재 포인터는 반환됩니다.
서버에서 배트맨 토토 또는 경고 메시지가 수신되거나 내부적으로 생성되는 경우libpq, 통지 수신자 함수가 호출됩니다. 그것은 a의 형태로 메시지를 전달합니다.pgres_nonfatal_error
pgresult
. (이를 통해 수신기가 사용을 사용하여 개별 필드를 추출 할 수 있습니다pqresulterrorfield
또는를 사용하여 완전한 미리 형식화 된 메시지를 얻으십시오.PQRESULTERRORMESSAGE
또는PQRESULTVERBOSEERRORMESSAGE
.) 동일한 공극 포인터가 전달되었습니다PQSETNOTICERECEIVER
도 통과됩니다. (이 포인터는 필요한 경우 응용 프로그램 별 상태에 액세스하는 데 사용할 수 있습니다.)
기본 배트맨 토토 수신기는 간단히 메시지를 추출합니다 (사용PQRESULTERRORMESSAGE
) 그리고 그것을 배트맨 토토 프로세서로 전달합니다.
통지 프로세서는 텍스트 양식으로 제공된 통지 또는 경고 메시지를 처리 할 책임이 있습니다. 그것은 메시지의 문자열 텍스트 (후행 신성 라인 포함)와 동일한 포인터와 동일한 포인터가 전달됩니다.pqsetnoticeprocessor
. (이 포인터는 필요한 경우 응용 프로그램 별 상태에 액세스하는 데 사용할 수 있습니다.)
기본 배트맨 토토 프로세서는 간단히 다음과 같습니다.
정적 무효 defaultNoticeProcessor (void *arg, const char *메시지) fprintf (stderr, "%s", 메시지);
일단 통지 수신자 또는 프로세서를 설정하면 해당 기능이만큼 오랫동안 호출 될 수 있어야합니다.pgconn
개체 또는pgresult
그로 만들어진 개체가 존재합니다. A의 창조시pgresult
, Thepgconn
의 현재 배트맨 토토 처리 포인터가에 복사되었습니다.pgresult
같은 기능으로 가능한 사용pqgetValue
.
문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면