보통,libpqSQL 명령의 전체 결과를 수집하여 단일로 응용 프로그램에 반환합니다.PGresult. 많은 수의 행을 반환하는 명령의 경우 이는 작동하지 않을 수 있습니다. 이러한 경우 애플리케이션은 다음을 사용할 수 있습니다.PQsendQuery그리고PQgetResult에단일 행 모드. 이 모드에서는 결과 행이 서버에서 수신되면서 한 번에 하나씩 애플리케이션에 반환됩니다.
단일 행 모드로 들어가려면 다음을 호출하세요.PQsetSingleRowMode성공적인 호출 직후PQsendQuery(또는 형제 함수). 이 모드 선택은 현재 실행 중인 쿼리에만 유효합니다. 그럼 전화하세요PQgetResult에 설명된 대로 null을 반환할 때까지 반복적으로PostgreSQL : 문서 : 15 : 34.4. 비동기 토토 베이 처리. 토토 사이트가 행을 반환하는 경우 개별적으로 반환됩니다.PGresult상태 코드가 있는 것을 제외하고는 일반적인 토토 사이트 결과처럼 보이는 객체PGRES_SINGLE_TUPLE대신PGRES_TUPLES_OK. 마지막 행 뒤 또는 토토 사이트가 0개 행을 반환하는 경우 즉시 상태가 있는 0개 행 객체PGRES_TUPLES_OK반환되었습니다. 이는 더 이상 행이 도착하지 않는다는 신호입니다. (단, 계속 통화해야 한다는 점 참고하세요.PQgetResultnull을 반환할 때까지.) 이들 모두PGresult객체에는 일반 객체와 동일한 행 설명 데이터(열 이름, 유형 등)가 포함됩니다.PGresult질의에 대한 개체가 있을 것입니다. 각 객체는 다음을 사용하여 해제되어야 합니다.PQclear평소처럼.
파이프라인 모드를 사용할 때 해당 쿼리에 대한 결과를 검색하기 전에 파이프라인의 각 쿼리에 대해 단일 행 모드를 활성화해야 합니다.PQgetResult. 참조PostgreSQL : 문서 : 15 : 34.5. 파이프 와이즈 토토 모드더 많은 정보를 원하시면.
PQsetSingleRowMode현재 실행 중인 쿼리에 대해 단일 행 모드를 선택하십시오.
int PQsetSingleRowMode(PGconn *conn);
이 함수는 직후에만 호출될 수 있습니다.PQsendQuery또는 그 형제 함수 중 하나, 다음과 같은 연결에 대한 다른 작업 이전에PQconsumeInput또는PQgetResult. 올바른 시간에 호출되면 함수는 현재 쿼리에 대해 단일 행 모드를 활성화하고 1을 반환합니다. 그렇지 않으면 모드는 변경되지 않고 함수는 0을 반환합니다. 어떤 경우에도 현재 쿼리가 완료된 후 모드가 정상으로 되돌아갑니다.
토토 사이트를 처리하는 동안 서버가 일부 행을 반환한 후 오류가 발생하여 토토 사이트가 중단될 수 있습니다. 일반적으로,libpq해당 행을 삭제하고 오류만 보고합니다. 그러나 단일 행 모드에서는 해당 행이 이미 애플리케이션에 반환되었습니다. 따라서 애플리케이션에는 일부가 표시됩니다.PGRES_SINGLE_TUPLE PGresult객체 다음에 aPGRES_FATAL_ERROR객체. 올바른 트랜잭션 동작을 위해서는 쿼리가 최종적으로 실패할 경우 이전에 처리된 행에 수행된 모든 작업을 삭제하거나 실행 취소하도록 애플리케이션을 설계해야 합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.