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

1.7. 사본 명령과 관련된 함수

사본 명령PostgreSQL읽거나 쓸 수있는 옵션이 있습니다 에 사용 된 네트워크 연결에libpq. 따라서 기능이 필요합니다 이 네트워크 연결에 직접 액세스하여 응용 프로그램이 필요할 수 있습니다 이 기능의 장점.

이러한 기능은 a를 얻은 후에 만 ​​실행해야합니다.pgres_토토 커뮤니티_out또는pgres_토토 커뮤니티_in결과 객체에서PQEXEC또는pqgetresult.

  • pqgetline읽기 a Newline-Terminated 문자 라인 ( 백엔드 서버) 크기 길이의 버퍼 문자열로.

    int pqgetline (pgconn *conn,
                  char *string,
                  int 길이)

    좋아요fgets,이 루틴 최대 1 개의 문자를 문자열로 복사합니다.gets종단 Newline을 제로 바이트로 변환합니다.pqgetline반환eof입력 끝에서, 전체 라인 인 경우 0 버퍼가 가득 차면 읽었지만 1 Newline 종료는 아직 읽지 않았습니다.

    신청서가 새로운 지 확인 해야하는지 확인해야합니다. 라인은 두 문자로 구성됩니다\.는 백엔드 서버를 나타냅니다 사본 명령의 결과를 완료했습니다. 만약 응용 프로그램은 길이 1 이상의 줄을받을 수 있습니다 캐릭터는 길고, 치료가 필요합니다.\.올바르게 라인 (그리고 그렇지 않습니다 예, 터미네이터의 긴 데이터 라인의 끝을 오해 선). 코드src/bin/psql/토토 커뮤니티.c예제 루틴을 포함합니다 사본 프로토콜을 올바르게 처리합니다.

  • pqgetLineAnsynca Newline-Terminated 문자 라인 ( 백엔드 서버) 차단없이 버퍼로.

    int pqgetLineAneCync (pgconn *conn,
                       char *버퍼,
                       int bufsize)

    이 루틴은와 유사합니다.pqgetline이지만 사용할 수 있습니다 복사 데이터를 비동기 적으로 읽어야하는 응용 프로그램 차단하지 않고. 사본 명령을 발행하고 Apgres_토토 커뮤니티_out응답, 응용 프로그램은 전화해야합니다pqconsumeInputandpqgetLineAnync데이터 종료 신호까지 감지됩니다. 같지 않은pqgetline, 이 루틴은 데이터 끝을 감지하는 데 책임이 있습니다. 각 호출마다pqgetLineAnync완전한 Newline- 종료 된 데이터 라인이면 데이터를 반환합니다. 에서 사용할 수 있습니다.libpq's 입력 버퍼 또는 들어오는 데이터 라인이 너무 길어서 맞지 않는 경우 발신자가 제공하는 버퍼에서. 그렇지 않으면 데이터가 없습니다 나머지 줄이 도착할 때까지 돌아 왔습니다.

    코피 종료 데이터 마커가있는 경우 루틴은 -1을 반환합니다 데이터를 사용할 수없는 경우 인식되었거나 0, 또는 긍정적 인 반환 된 데이터의 바이트 수를 제공하는 숫자. -1이면 반품, 발신자는 다음 전화해야합니다PQEND토토 커뮤니티그리고 정상으로 돌아갑니다 처리. 반환 된 데이터는 a를 넘지 않습니다 Newline 캐릭터. 가능하면 전체 라인이 반환됩니다 한 번에. 그러나 발신자가 제공하는 버퍼가 백엔드가 전송 한 줄을 보유하고 부분 데이터를 보유하고 있습니다. 라인이 반환됩니다. 테스트를 통해 감지 할 수 있습니다 마지막으로 반환 된 바이트가\ n반환 된 문자열은 무효가 끝나지 않습니다. (만약 당신이 종료 Null을 추가하고 싶으시면 A를 통과하십시오.bufsize하나보다 작은 것 실제로 방은 이용 가능합니다.)

  • pqputline보내기 a 백엔드 서버에 NULL이 종료 된 문자열. IF가 0을 반환합니다 좋아요,eof보낼 수없는 경우 끈.

    int pqputline (pgconn *conn,
                  const char *string);

    신청서는 두 가지를 명시 적으로 보내야합니다 문자\.최종 라인에서 백엔드에 그 전송이 완료되었음을 나타냅니다. 데이터.

  • PQPUTNBYTES보내기 a 백엔드 서버에 대한 널없는 문자열. 반환 0 OK 인 경우eof보낼 수없는 경우 끈.

    int pqputnbytes (pgconn *conn,
                    const char *버퍼,
                    int nbytes);

    이것은 똑같습니다pqputline, 데이터 버퍼에 필요한 경우를 제외하고 보내야 할 바이트 수가 직접 지정됩니다.

  • PQEND토토 커뮤니티동기화 백엔드. 이 기능은 백엔드가 가질 때까지 기다립니다 사본을 마쳤습니다. 마지막시기에 발행해야합니다 문자열이를 사용하여 백엔드로 전송되었습니다.pqputline또는 마지막 문자열이있을 때 사용를 사용하여 백엔드에서받은pggetline. 발급되거나 백엔드가 있어야합니다 얻을 수 있습니다"out in sync"프론트 엔드. 이 기능에서 돌아 왔을 때 백엔드는 다음과 같습니다 다음 SQL 명령을받을 준비가되었습니다. 반환 값은 0입니다 성공적인 완료시, 그렇지 않으면 0이 아닙니다.

    int pqend토토 커뮤니티 (pgconn *conn);

    예를 들어 :

    pqexec (Conn, "테이블 foo (int4, b char (16), d double precision)을 작성합니다.
    pqexec (conn, "stdin에서 foo를 복사한다");
    pqputline (Conn, "3 \ Thello World \ t4.5 \ n");
    pqputline (conn, "4 \ tgoodbye world \ t7.11 \ n");
    ...
    pqputline (conn, "\\. \ n");
    pqendcopy (conn);

사용시pqgetresult, 응용 프로그램은 A에 응답해야합니다.pgres_토토 커뮤니티_out실행하여 결과pqgetline반복적으로PQEND토토 커뮤니티터미네이터 라인이 보입니다. 그것 그런 다음로 돌아 가야합니다.pqgetresult루프까지pqgetresultNULL을 반환합니다. 마찬가지로 Apgres_토토 커뮤니티_in결과는 a 일련의pqputline전화가 따랐습니다 에 의해PQEND토토 커뮤니티, 그런 다음으로 돌아갑니다.pqgetresult루프. 이 배열 에 포함 된 사본 또는 복사 명령이 일련의SQL명령이 있습니다 올바르게 실행.

이전 응용 프로그램은 사본을 제출하거나 복사 할 가능성이 높습니다. 을 통해PQEXEC트랜잭션은 이후에 이루어집니다.PQEND토토 커뮤니티. 이것은 경우에만 올바르게 작동합니다 복사/아웃은 유일한 것입니다SQL명령 문자열의 명령.