보통,libpqSQL 명령의 전체 결과를 수집하여 응용 프로그램에 단일로 반환합니다pgresult
. 많은 수의 행을 반환하는 명령에 대해서는 불가능할 수 있습니다.pqsendquery
andpqgetresult
in단일 로우 모드. 이 모드에서는 결과 행이 서버에서 수신되면서 한 번에 하나씩 응용 프로그램으로 반환됩니다.
싱글 열 모드로 들어가려면 전화pqsetsinglerowmode
성공적인 전화 직후pqsendquery
(또는 형제 기능). 이 모드 선택은 현재 실행중인 쿼리에만 효과적입니다.pqgetresult
반복적으로, null을 반환 할 때까지, 문서화 된대로섹션 34.4. 토토 결과가 행을 반환하면 개인으로 반환됩니다pgresult
객체, 상태 코드를 제외한 일반적인 토토 결과 결과처럼 보이는 객체pgres_single_tuple
대신pgres_tuples_ok
. 마지막 행 후 또는 토토 결과가 0 행을 반환하는 경우 즉시, 상태가있는 제로 로우 객체pgres_tuples_ok
반환됩니다. 이것은 더 이상 행이 도착하지 않을 것이라는 신호입니다.pqgetresult
NULL을 반환 할 때까지.) 이들 모두pgresult
개체는 평범한 동일한 행 설명 데이터 (열 이름, 유형 등)를 포함합니다pgresult
토토 결과의 개체. 각 객체는PQCLEAR
평소와 같이.
쿼리를 처리하는 동안 서버는 일부 행을 반환 한 다음 오류가 발생하여 쿼리가 중단 될 수 있습니다. 일반적으로libpq그러한 행을 버리고 오류 만보고합니다. 그러나 단일 열 모드에서는 해당 행이 이미 응용 프로그램으로 반환되었습니다.pgres_single_tuple
pgresult
개체 뒤에 Apgres_fatal_error
개체. 적절한 트랜잭션 동작을 위해, 쿼리가 궁극적으로 실패하면 이전에 처리 된 행으로 수행 된 모든 것을 폐기하거나 취소하도록 애플리케이션이 설계되어야합니다..