지원 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

32.9. 와 관련된 기능스포츠 토토 베트맨명령

스포츠 토토 베트맨명령PostgreSQL|libpq. 이 섹션에 설명 된 기능은 복사 데이터를 공급하거나 소비하여 응용 프로그램 이이 기능을 활용할 수 있도록합니다.

전체 프로세스는 응용 프로그램이 먼저 SQL을 발행한다는 것입니다.스포츠 토토 베트맨명령을 통해PQEXEC또는 동등한 함수 중 하나. 이것에 대한 응답 (명령에 오류가없는 경우)은 A입니다.pgresult상태 코드를 가진 객체pgres_스포츠 토토 베트맨_out또는pgres_스포츠 토토 베트맨_in(지정된 사본 방향에 따라 다름). 그런 다음 응용 프로그램은이 섹션의 기능을 사용하여 데이터 행을 수신하거나 전송해야합니다. 데이터 전송이 완료되면 다른pgresult객체가 반환되어 전송의 성공 또는 실패를 나타냅니다. 그 상태는pgres_command_ok성공 또는pgres_fatal_error문제가 발생한 경우. 이 시점에서 추가 SQL 명령은를 통해 발행 될 수 있습니다.PQEXEC. ( 동안 동일한 연결을 사용하여 다른 SQL 명령을 실행할 수 없습니다스포츠 토토 베트맨운영 진행 중입니다.)

if a스포츠 토토 베트맨명령은를 통해 발행됩니다.PQEXEC추가 명령을 포함 할 수있는 문자열에서 응용 프로그램은 계속해서 결과를 가져와야합니다pqgetresult완료 후스포츠 토토 베트맨시퀀스. 만pqgetresult반환13124_13130확실합니까PQEXEC명령 문자열이 완료되었으며 더 많은 명령을 발행하는 것이 안전합니다.

이 섹션의 기능은 결과 상태를 얻은 후에 만 ​​실행해야합니다.pgres_스포츠 토토 베트맨_out또는pgres_스포츠 토토 베트맨_inFromPQEXEC또는pqgetresult.

apgresult이러한 상태 값 중 하나를 갖는 객체에 대한 추가 데이터가 있습니다스포츠 토토 베트맨시작중인 작동. 이 추가 데이터는 쿼리 결과와 관련하여 사용되는 기능을 사용하여 사용할 수 있습니다.

pqnfields

복사 할 열 (필드) 수를 반환합니다.

pqbinaryTuples

0은 전체 사본 형식이 텍스트임을 나타냅니다 (최신으로 구분, 구분자 문자로 분리 된 열). 도 1은 전체 사본 형식이 바이너리임을 나타냅니다. 보다스포츠 토토 베트맨자세한 내용은

pqfformat

사본 조작의 각 열과 관련된 형식 코드 (텍스트의 경우 0, 이진의 경우 1)를 반환합니다. 전체 사본 형식이 텍스트 인 경우 콜럼 당 형식 코드는 항상 0이되지만 이진 형식은 텍스트와 이진 열 모두를 지원할 수 있습니다. (그러나 현재의 구현시스포츠 토토 베트맨따라서 컬럼 당 형식은 항상 전체 형식과 일치합니다.)

참고 :이러한 추가 데이터 값은 프로토콜 3.0을 사용할 때만 사용할 수 있습니다. 프로토콜 2.0을 사용하면이 모든 기능이 0을 반환합니다.

32.9.1. 전송 기능스포츠 토토 베트맨데이터

이 기능은 동안 데이터를 보내는 데 사용됩니다stdin에서 복사. 연결이 없을 때 호출하면 실패합니다스포츠 토토 베트맨_in15527_15536

pqput스포츠 토토 베트맨data

기간 동안 서버로 데이터를 보냅니다스포츠 토토 베트맨_inState.

int pqput스포츠 토토 베트맨data (pgconn *conn,
                  const char *버퍼,
                  int nbytes);

전송스포츠 토토 베트맨지정된 데이터버퍼, 길이nbytes, 서버. 결과는 데이터를 대기하는 경우 1, 전체 버퍼로 인해 대기열이없는 경우 0 (비 블로킹 모드에서만 발생) 또는 오류가 발생한 경우 -1입니다. (사용PQERRORMESSAGE반환 값이 -1 인 경우 세부 사항을 검색합니다. 값이 0 인 경우 쓰기 준비를 기다리고 다시 시도하십시오.)

응용 프로그램은를 나눌 수 있습니다.스포츠 토토 베트맨편리한 크기의 버퍼로드로의 데이터 스트림. 버퍼-로드 경계는 보낼 때 의미 론적 의미가 없습니다. 데이터 스트림의 내용은에서 기대하는 데이터 형식과 일치해야합니다.스포츠 토토 베트맨명령; 보다스포츠 토토 베트맨자세한 내용.

PQPUT스포츠 토토 베트맨END

기간 동안 서버에 데이터 종료 표시를 보냅니다스포츠 토토 베트맨_inState.

int pqput스포츠 토토 베트맨end (pgconn *conn,
                 const char *errormsg);

종료스포츠 토토 베트맨_in성공적으로 작동하는 경우errormsgisNULL. 만약에errormsgNULL그런 다음스포츠 토토 베트맨| 줄은에 묶여 있어야합니다.errormsg오류 메시지로 사용됩니다. (서버가 이미 실패했을 수 있으므로이 정확한 오류 메시지가 서버에서 돌아올 것이라고 가정해서는 안됩니다스포츠 토토 베트맨자체 이유로. 또한 Pre-3.0 protocol 연결을 사용할 때 강제 고장 옵션이 작동하지 않습니다.)

종료 메시지가 전송 된 경우 결과는 1입니다. 또는 비 차단 모드에서는 종료 메시지가 성공적으로 대기되었음을 나타낼 수 있습니다. (차단 모드에서 데이터가 전송되었는지 확인하려면 다음에 쓰기 준비를 기다려야합니다.pqflush, 0을 반환 할 때까지 반복합니다.) 0. Zero는 전체 버퍼로 인해 함수가 종료 메시지를 대기열 할 수 없음을 나타냅니다. 이것은 비 차단 모드에서만 발생합니다. (이 경우 쓰기 준비를 기다리고를 시도하십시오.PQPUT스포츠 토토 베트맨END다시 호출하십시오.) 하드 오류가 발생하면 -1이 반환됩니다. 사용할 수 있습니다PQERRORMESSAGE세부 정보를 검색하려면

성공적으로 전화 한 후PQPUT스포츠 토토 베트맨END, Callpqgetresult의 최종 결과 상태를 얻으려면스포츠 토토 베트맨명령. 이 결과가 일반적인 방식으로 사용할 수 있기를 기다릴 수 있습니다. 그런 다음 정상 작동으로 돌아갑니다.

32.9.2. 수신 기능스포츠 토토 베트맨데이터

이 함수는 동안 데이터를 수신하는 데 사용됩니다.stdout에 복사. 연결이 없을 때 호출하면 실패합니다스포츠 토토 베트맨_outState.

pqget스포츠 토토 베트맨Data

기간 동안 서버로부터 데이터 수신스포츠 토토 베트맨_outState.

int pqget스포츠 토토 베트맨data (pgconn *conn,
                  char ** 버퍼,
                  int async);

a 동안 서버에서 다른 행의 데이터 행을 얻으려고 시도합니다.스포츠 토토 베트맨. 데이터는 항상 한 번에 하나의 데이터 행으로 반환됩니다. 부분 행만 사용할 수 있으면 반환되지 않습니다. 데이터 행을 성공적으로 반환하려면 데이터를 보유하기 위해 메모리 청크를 할당하는 것이 포함됩니다. 그만큼버퍼매개 변수는 비 여야합니다null. *버퍼할당 된 메모리를 가리키거나NULL버퍼가 반환되지 않은 경우. 비NULL결과 버퍼를 사용하여 해제해야PQFREEMEM더 이상 필요하지 않은 경우.

행이 성공적으로 반환되면 반환 값은 행의 데이터 바이트 수입니다 (이것은 항상 0보다 큽니다). 반환 된 문자열은 항상 무효화되지만 텍스트에만 유용 할 것입니다스포츠 토토 베트맨. 0의 결과는임을 나타냅니다.스포츠 토토 베트맨아직 진행 중이지만 아직 사용 가능한 행이 없습니다 (이것은 가능합니다.async참). -1의 결과는임을 나타냅니다.스포츠 토토 베트맨완료되었습니다. -2의 결과는 오류가 발생했음을 나타냅니다 (ConsultPQERRORMESSAGE이유가 있습니다).

whenasyncTrue (0이 아님),pqget스포츠 토토 베트맨Data입력 대기를 차단하지 않습니다. 이면 0을 반환합니다.스포츠 토토 베트맨여전히 진행 중이지만 완전한 행을 사용할 수 없습니다. (이 경우 읽기 준비를 기다린 다음 전화pqconsumeInput호출 전pqget스포츠 토토 베트맨Data다시.) 언제async거짓 (0),pqget스포츠 토토 베트맨Data데이터를 사용할 수 있거나 작업이 완료 될 때까지 차단됩니다.

이후pqget스포츠 토토 베트맨Data반환 -1, callpqgetresult의 최종 결과 상태를 얻으려면스포츠 토토 베트맨명령. 이 결과가 일반적인 방식으로 사용할 수 있기를 기다릴 수 있습니다. 그런 다음 정상 작동으로 돌아갑니다.

32.9.3. 에 대한 쓸모없는 기능스포츠 토토 베트맨

이러한 기능은 오래된 취급 방법을 나타냅니다스포츠 토토 베트맨. 그들은 여전히 ​​작동하지만 오류 처리가 열악하고, 데이터 종료를 감지하는 불편한 방법, 이진 또는 비 차단 전송에 대한 지원 부족으로 인해 더 이상 사용되지 않습니다.

pqgetline

Newline-Terminated 문자 라인 (서버에서 전송)을 버퍼 크기로 읽습니다길이.

int pqgetline (pgconn *conn,
              char *버퍼,
              int 길이);

이 함수는까지 복사합니다.길이-1 문자 버퍼에 문자를 사용하고 종단 Newline을 제로 바이트로 변환합니다.pqgetline반환eof입력 끝에서 전체 라인을 읽은 경우 0, 버퍼가 가득 찼지만 종료 신생 라인을 아직 읽지 않은 경우 0..

신청서는 새 라인이 두 문자로 구성되어 있는지 확인해야합니다.\., 서버가의 결과를 송신했음을 나타냅니다.스포츠 토토 베트맨명령. 응용 프로그램이 이상의 줄을받을 수있는 경우길이-1 문자 길이,\.라인을 올바르게 (예를 들어, 터미네이터 라인에 대한 긴 데이터 라인의 끝을 오해하지 마십시오)..

​​PQGETLINEASYNC

행을 읽는다스포츠 토토 베트맨데이터 (서버에서 전송) 차단없이 버퍼로 전송합니다.

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

이 기능은와 유사합니다.pqgetline, 그러나 읽어야하는 응용 프로그램에서 사용할 수 있습니다스포츠 토토 베트맨데이터 비동기식, 즉 차단하지 않고. 발행스포츠 토토 베트맨명령 및 apgres_스포츠 토토 베트맨_out응답, 신청서가 호출해야합니다pqconsumeInputandpqgetLineAnync데이터 종료 신호가 감지 될 때까지.

와 달리pqgetline,이 함수는 데이터 끝 감지에 대한 책임이 있습니다.

각 호출에서pqgetLineAnync전체 데이터 행을 사용할 수 있으면 데이터를 반환합니다libpq의 입력 버퍼. 그렇지 않으면 나머지 행이 도착할 때까지 데이터가 반환되지 않습니다. 코피 종단 데이터 마커가 인식 된 경우 함수는 -1 또는 데이터를 사용할 수없는 경우 0 또는 반환 된 데이터의 바이트 수를 제공하는 양수를 반환합니다. -1이 반환되면 발신자는 다음 호출PQEND스포츠 토토 베트맨그리고 정상 처리로 돌아갑니다.

반환 된 데이터는 데이터 열 경계를 넘어 확장되지 않습니다. 가능하면 전체 행이 한 번에 반환됩니다. 그러나 발신자가 제공하는 버퍼가 서버에서 전송하는 행을 유지하기에는 너무 작아서 부분 데이터 행이 반환됩니다. 텍스트 데이터를 사용하면 마지막 반환 바이트가인지 테스트하여 감지 할 수 있습니다.\ n(이진에서스포츠 토토 베트맨, 실제 구문 분석스포츠 토토 베트맨동등한 결정을하기 위해서는 데이터 형식이 필요합니다.) 반환 된 문자열은 무효가되지 않습니다. (종료 Null을 추가하려면 A를 통과하십시오.bufsize실제로 사용 가능한 방보다 작은 하나입니다.)

pqputline

서버에 null 종결 문자열을 보냅니다. OK이고 0을 반환합니다.eof문자열을 보낼 수없는 경우.

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

the스포츠 토토 베트맨일련의 통화로 전송 된 데이터 스트림pqputline|pqgetLineAnync, 응용 프로그램이 정확히 하나의 데이터 행을 보낼 의무가 없다는 점을 제외하고pqputline전화; 통화 당 부분 줄 또는 여러 줄을 보내는 것은 괜찮습니다.

참고 :PostgreSQL프로토콜 3.0, 응용 프로그램이 두 문자를 명시 적으로 보내야 할 필요가있었습니다\.서버에 보내는 것을 나타내는 최종 라인으로스포츠 토토 베트맨데이터. 이것은 여전히 ​​작동하지만 감가 상각되며의 특별한 의미는\.향후 릴리스에서 제거 될 수 있습니다. 전화하기에 충분합니다PQEND스포츠 토토 베트맨실제 데이터를 보낸 후.

PQPUTNBYTES

널리 터진 문자열을 서버로 보냅니다. OK이고 0을 반환합니다.eof문자열을 보낼 수없는 경우.

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

이것은 똑같습니다pqputline-보내는 바이트 수가 직접 지정되기 때문에 데이터 버퍼를 무효화 할 필요가 없다는 점을 제외하고. 이진 데이터를 보낼 때이 절차를 사용하십시오.

PQEND스포츠 토토 베트맨

서버와 동기화됩니다.

int pqend스포츠 토토 베트맨 (pgconn *conn);

이 함수는 서버가 복사를 마칠 때까지 기다립니다. 마지막 문자열이를 사용하여 서버로 전송 될 때 발행해야합니다.pqputline또는 마지막 문자열이 서버에서 사용하여 수신 된 경우pqgetline. 발행해야합니다. 그렇지 않으면 서버가 얻을 것입니다"out in sync"클라이언트와. 이 기능에서 돌아 오면 서버는 다음 SQL 명령을 수신 할 준비가되었습니다. 성공적인 완료시 반환 값은 0이지만 0이 아닌 그렇지 않으면 0입니다. (사용PQERRORMESSAGE반환 값이 0이 아닌 경우 세부 정보를 검색하려면

사용시pqgetresult, 응용 프로그램은 a에 응답해야합니다.pgres_스포츠 토토 베트맨_out실행하여 결과pqgetline반복적으로PQEND스포츠 토토 베트맨터미네이터 라인이 보입니다. 그런 다음로 돌아 가야합니다.pqgetresult루프까지pqgetresult널 포인터를 반환합니다. 마찬가지로 Apgres_스포츠 토토 베트맨_in결과는 일련의 일련의 처리입니다.pqputline통화 후PQEND스포츠 토토 베트맨, 그런 다음으로 돌아갑니다.pqgetresult루프. 이 계약은 A를 보장합니다.스포츠 토토 베트맨일련의 일련의 명령SQL명령이 올바르게 실행됩니다.

이전 응용 프로그램이 a를 제출할 가능성이 높습니다.스포츠 토토 베트맨viaPQEXEC그리고 거래가 이후에 이루어 졌다고 가정합니다PQEND스포츠 토토 베트맨. 이것은 만 올바르게 작동합니다.스포츠 토토 베트맨유일한SQL명령 문자열의 명령.