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

토토 사이트

이름

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

시놉시스

토토 사이트 (쿼리, Tcount)

입력

char *쿼리

문자열 쿼리 계획

intTcount

반환 할 최대 튜플 수

출력

int
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 ... Into가 실행 된 경우
SPI_OK_INSERT삽입 (또는 삽입 ... 선택)이 실행 된 경우
SPI_OK_DELETE삭제가 실행 된 경우
SPI_OK_UPDATE업데이트가 실행 된 경우

설명

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

usage

이것은 연결된 절차에서만 호출해야합니다. 만약에TcountZERO는 실행됩니다 쿼리 스캔으로 반환 된 모든 튜플에 대한 쿼리. 사용Tcount 0 제한 할 수 있습니다 쿼리가 실행될 튜플의 수 (많이 한계 조항처럼). 예를 들어,

토토 사이트 ( "탭에 삽입 * 탭에서 탭", 5);

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

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

(마지막) 쿼리가 있었던 실제 튜플 수 실행 된 글로벌 변수 SPI_PROCESSED (NOT이 아닌 경우에서 실행됩니다.spi_ok_utility). 만약에spi_ok_select반환 및 SPI_PROCINGS 0 그런 다음 글로벌 포인터 spitupletable을 사용할 수 있습니다 *spi_tuptable 결과 튜플에 액세스 할 수 있습니다.

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

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 쿼리 유형은 알 수 없습니다 (이것은 발생하지 않아야합니다).

구조

ifspi_ok_select반환됩니다 그리고 SPI_PROCESSED 0 그러면 글로벌 포인터를 사용할 수 있습니다. spitupletable *spi_tuptable 선택한 튜플에 액세스 할 수 있습니다.

구조 spitupletable은 spi.h :에 정의됩니다.

typedef struct

       MemoryContext tuptabcxt;    / * 결과 테이블의 메모리 컨텍스트 */
       UINT32 할당;        / * 할당 된 vals */
       UINT32 무료;           / * 무료 VALS */
       tupledesc tupdesc;        / * 튜플 디스크립터 */
       heppuple *vals;           / * 튜플 */
    spitupletable;

vals는 튜플에 대한 다양한 포인터입니다 (유용한 수 항목은 spi_processed에 의해 제공됩니다). Tupledesc Tupdesc는 튜플입니다 SPI 기능으로 전달할 수있는 설명 자 튜플. tuptabcxt, 할당 및 무료는 내부 필드가 아닙니다 SPI 발신자가 사용하기위한 것입니다.

참고 :기능토토 사이트, 토토 사이트PandSPI_PREPARESPI_PROCESSED를 모두 변경합니다 spi_tuptable (의 내용이 아니라 포인터입니다 구조). 이 두 가지 글로벌 변수를 로컬에 저장하십시오 하나의 결과에 액세스 해야하는 경우 절차 변수토토 사이트또는토토 사이트P나중에 전화를 걸어.

SPI_FINISH모두를 해방시킵니다 현재 절차 중에 할당 된 spitupletables. 당신은 할 수 있습니다 일찍 특정 결과 테이블을 무료로 사용하십시오. 전화로SPI_FREETUPTABLE.