이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

토토 결과

이름

토토 결과- 실행 계획을 만듭니다 (Parser+Planner+Optimizer) 및 쿼리 실행.

시놉시스

토토 결과 (쿼리, Tcount)

입력

char *쿼리

문자열 쿼리 계획

inttcount

반환 할 튜플의 최대 수

출력

int
SPI_OK_EXECif 제대로 연결이 끊어졌습니다
SPI_ERROR_UNCONNECTif 연결되지 않은 절차에서 호출
SPI_ERROR_ARGUMENT쿼리 인 경우 NULL 또는Tcount< 0.
SPI_ERROR_UNCONNECTif 절차가 연결되지 않았습니다.
SPI_ERROR_COPYstdin에서 복사하는 경우
SPI_ERROR_CURSORif 커서 선언/닫기, fetch.
SPI_ERROR_TRANSACTIONif 시작/중단/종료.
SPI_ERROR_OPUNKNOWN유형 인 경우 쿼리가 알려지지 않았습니다 (이것은 발생하지 않아야합니다).

쿼리 실행이 성공적이면 다음 (음이 아닌) 값이 반환됩니다.

spi_ok_utility일부 유틸리티 (예 : 테이블 생성 ...) 인 경우 실행
spi_ok_selectif select (select ... into!) 실행
spi_ok_selintoSELECT ... IF EXECEDED
SPI_OK_INSERT삽입 (또는 삽입 ... 선택)이 실행 된 경우
SPI_OK_DELETE삭제가 실행 된 경우
spi_ok_update업데이트가 실행 된 경우

설명

토토 결과실행 계획을 만듭니다 (Parser+Planner+Optimizer) 쿼리를 실행합니다.Tcount튜플.

usage

이것은 연결된 절차에서만 호출해야합니다. 만약에Tcount0이면 실행됩니다 쿼리 스캔으로 반환 된 모든 튜플에 대한 쿼리. 사용Tcount 0 제한 할 수 있습니다 쿼리가 실행되는 튜플의 수. 을 위한 예,

토토 결과 ( "테이블에 삽입 *에서 *에서 삽입", 5);
는 최대 5 개의 튜플을 테이블에 삽입 할 수 있습니다. 만약에 쿼리 실행은 성공적이지 않은 가치가되었습니다. 반환됩니다.

참고 :하나의 문자열로 많은 쿼리를 전달할 수 있습니다 쿼리 문자열은 규칙에 의해 다시 작성 될 수 있습니다.토토 결과마지막으로 결과를 반환합니다 쿼리 실행.

(마지막) 쿼리가 있었던 실제 튜플 수 실행 된 글로벌 변수 SPI_PROCESSED (NOT이 아닌 경우에서 실행됩니다.spi_ok_utility). 만약에spi_ok_select반환 및 spi_proceded 0 그런 다음 글로벌 포인터 spitupletable을 사용할 수 있습니다 *spi_tuptable 선택한 튜플에 액세스 할 수 있습니다.SPI_FINISH자유롭고 모든 것을 만듭니다 spitupletables는 사용할 수 없습니다! (메모리 관리 참조).

토토 결과중 하나를 반환 할 수 있습니다 다음 (부정) 값 :

SPI_ERROR_ARGUMENTif 쿼리는 null 또는Tcount<0.
SPI_ERROR_UNCONNECT절차가 연결되지 않은 경우.
SPI_ERROR_COPY사본 인 경우 stdin에서/
SPI_ERROR_CURSORif 커서 선언/닫기, fetch.
SPI_ERROR_TRANSACTION시작/abort/end.
SPI_ERROR_OPUNKNOWNif 쿼리 유형은 알 수 없습니다 (이것은 발생하지 않아야합니다).

알고리즘

토토 결과다음을 수행합니다.

SPI 관리자와 절차를 연결합니다 절차에 따라 모든 메모리 할당을 해방Palloc이후SPI_CONNECT. 이러한 할당은 될 수 없습니다 더 이상 사용했습니다! 메모리 관리 참조.