보통,libpqSQL 명령의 전체 결과를 수집하여 응용 프로그램에 단일로 반환합니다pgresult
. 많은 수의 행을 반환하는 명령에 대해서는 불가능할 수 있습니다.pqsendquery
andpqgetresult
in단일 로우 모드또는청크 모드. 이 모드에서는 결과 행 (S)이 서버에서 수신 된대로 응용 프로그램으로 반환됩니다. 단일 로우 모드의 경우 한 번에 하나씩 또는 청크 모드의 그룹으로.
이 모드 중 하나를 입력하려면 전화pqsetsinglerowmode
또는pqsetchUnkedrowsmode
성공적인 전화 직후pqsendquery
(또는 형제 기능). 이 모드 선택은 현재 실행중인 쿼리에만 효과적입니다.pqgetresult
반복적으로, null이 반환 될 때까지, 문서화 된대로섹션 32.4. 토토 커뮤니티가 행을 반환하면 하나 이상으로 반환됩니다pgresult
객체, 상태 코드를 제외한 일반적인 토토 커뮤니티 결과처럼 보이는 객체pgres_single_tuple
단일 열 모드 또는pgres_tuples_chunk
대신 청크 모드의 경우pgres_tuples_ok
. 각각에 정확히 하나의 결과 행이 있습니다pgres_single_tuple
객체, apgres_tuples_chunk
개체에는 최소한 하나의 행이 포함되어 있지만 청크 당 지정된 행 수보다 많지 않습니다. 마지막 행 후 또는 쿼리가 0 행을 반환하는 경우 즉시, 상태가있는 제로 로우 객체pgres_tuples_ok
반환됩니다. 이것은 더 이상 행이 도착하지 않을 것이라는 신호입니다.pqgetresult
NULL을 반환 할 때까지.) 이들 모두pgresult
개체는 평범한 동일한 행 설명 데이터 (열 이름, 유형 등)를 포함합니다pgresult
토토 커뮤니티의 개체. 각 객체는PQCLEAR
평소와 같이.
파이프 라인 모드를 사용할 때는 파이프 라인의 각 쿼리에 대해 단일 줄 또는 청크 모드를 활성화해야합니다.pqgetresult
. 보다PostgreSQL : 문서 : 17 : 32.5. 파이프 토토 꽁 머니 모드자세한 내용은
pqsetsinglerowmode
#현재 실행중인 쿼리의 단일 열 모드 선택.
int pqsetsinglerowmode (pgconn *conn);
이 함수는 즉시 호출 할 수 있습니다pqsendquery
또는 그와 같은 연결에서 다른 작업을하기 전에pqconsumeInput
또는pqgetresult
. 올바른 시간에 호출되면 기능은 현재 쿼리의 단일 열 모드를 활성화하고 1을 반환합니다. 그렇지 않으면 모드가 변경되지 않고 0이 반환됩니다. 어쨌든 현재 쿼리가 완료된 후 모드가 정상으로 되돌아갑니다..
pqsetchUnkedrowsmode
#현재 실행중인 쿼리의 청크 모드 선택.
int pqsetchunkedrowsmode (pgconn *conn, int chunksize);
이 기능은와 유사합니다.pqsetsinglerowmode
- 최대 |Chunksize
당 행pgresult
이 기능은 직후에만 호출 할 수 있습니다.pqsendquery
또는 그와 같은 연결에서 다른 작업을하기 전에pqconsumeInput
또는pqgetresult
. 올바른 시간에 호출되면, 함수는 현재 쿼리의 청크 모드를 활성화하고 1을 반환합니다. 그렇지 않으면 모드가 변경되지 않은 상태로 유지되고 함수는 0을 반환합니다. 어쨌든 현재 쿼리가 완료된 후 모드가 정상으로 되돌아갑니다..
쿼리를 처리하는 동안 서버는 일부 행을 반환 한 다음 오류가 발생하여 쿼리가 중단 될 수 있습니다. 일반적으로libpq그러한 행을 버리고 오류 만보고합니다. 그러나 단일 줄 또는 청크 모드에서는 일부 행이 이미 응용 프로그램으로 반환되었을 수 있습니다.pgres_single_tuple
또는pgres_tuples_chunk
pgresult
객체 뒤에 Apgres_fatal_error
개체. 적절한 트랜잭션 동작을 위해, 쿼리가 궁극적으로 실패하면 이전에 처리 된 행으로 수행 된 모든 것을 폐기하거나 취소하도록 애플리케이션이 설계되어야합니다..
문서에 맞지 않는 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면