이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다젠 토토 : 문서 : 17 : 32.8. 빠른 경로 토토 결과버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

31.7. 빠른 경로 토토 결과

postgresql빠른 경로를 제공합니다 간단한 기능 호출을 서버로 보내는 토토 결과.

팁 :이 토토 결과는 가능한 한 다소 쓸모가 없습니다 설정하여 유사한 성능과 더 큰 기능을 달성합니다 함수 호출을 정의하기위한 준비된 명령문. 그런 다음 실행합니다 파라미터 및 결과의 이진 전송이있는 명령문 빠른 경로 함수 호출을 대체합니다.

함수PQFN요청 빠른 경로 토토 결과를 통한 서버 기능 실행 :

pgresult *pqfn (pgconn *conn,
               int fnid,
               int *result_buf,
               int *result_len,
               int result_is_int,
               const pqargblock *args,
               int nargs);

typedef struct

    int len;
    int isint;
    노동 조합

        int *ptr;
        int 정수;
     u;
 pqargblock;

thefnid인수는 다음과 같습니다 실행할 기능.argsandNARGS전달할 매개 변수를 정의합니다 기능에; 선언 된 기능 인수와 일치해야합니다 목록. 때isint필드 a 매개 변수 구조는 사실입니다.U.Integer값은 서버로 전송됩니다 표시된 길이의 정수 (이것은 2 또는 4 바이트 여야합니다); 적절한 바이트 스왑 핑이 발생합니다. 언제isintIS False, 표시된 바이트 수에서*u.ptr처리없이 전송됩니다. 데이터가 있어야합니다 이진 전송을 위해 서버가 기대하는 형식으로 함수의 인수 데이터 유형. ( 선언U.ptr유형의 상태int *역사적입니다. 그것을 고려하는 것이 더 낫다void *.)result_buf포인트 기능의 반환 값을 배치하는 버퍼에. 그만큼 발신자는 반품을 저장하기에 충분한 공간을 할당해야합니다. 값. (점검이 없습니다!) 바이트의 실제 결과 길이는 에 의해 지적 된 정수에 반환됩니다result_len. 2 바이트 또는 4 바이트 정수 결과가있는 경우 예상, setresult_is_int~ 1, 그렇지 않으면 0으로 설정합니다. 설정result_is_int~ 1 원인libpq필요한 경우 값을 바이트로 스왑하려면 그것이 적절한 것으로 전달된다는 것int값 클라이언트 기계의 경우; 4 바이트 정수가 제공됩니다 안으로*result_buf허용 결과 크기. 언제result_is_intis 0, 서버에서 전송 된 바이너리 형식 바이트 스트링이 반환됩니다. 수정되지 않은. (이 경우 고려하는 것이 좋습니다result_buf유형으로무효 *.)

PQFN항상 유효한 반환pgresult포인터. 결과 상태 결과가 사용되기 전에 확인해야합니다. 발신자입니다 해방 책임pgresultwithPQCLEAR더 이상 없을 때 필요합니다.

null 인수를 처리하는 것은 불가능하다는 점에 유의하십시오. 이 토토 결과를 사용할 때 결과, 또는 설정 값 결과.