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