이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다postgresql : 문서 : 17 : 토토 사이트 추천버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

사설 토토

이름

사설 토토- 명령 실행

시놉시스

int 사설 토토 (const char *명령, boolread_only, Longcount)

설명

사설 토토지정된 것을 실행합니다 에 대한 SQL 명령count행. 만약에read_onlyistrue, 명령은 읽기 전용이어야하며 실행해야합니다 오버 헤드가 다소 줄어 듭니다.

이 함수는 연결된 절차에서만 호출 할 수 있습니다.

ifcount는 0입니다 적용되는 모든 행에 대해 실행됩니다. 만약에count| 0보다 크면count행이 검색됩니다. 실행 a와 마찬가지로 카운트에 도달하면 중지됩니다.Limit쿼리에 대한 조항. 예를 들어,

사설 토토 ( "선택 * From Foo", True, 5);

테이블에서 최대 5 행을 검색합니다. 그런 것입니다 한계는 명령이 실제로 행을 반환 할 때만 유효합니다. 을 위한 예,

사설 토토 ( "foo에 삽입 *에서 선택 *에서 삽입", false, 5);

모든 행을 삽입합니다bar, 무시 그만큼count매개 변수. 그러나

사설 토토 ( "foo에 삽입 * 삽입 *에서 bar returning *", false, 5);

실행이 중지되므로 최대 5 행이 삽입됩니다. 다섯 번째 이후반환결과 행입니다 검색.

하나의 문자열로 여러 명령을 전달할 수 있습니다;사설 토토명령의 결과를 반환합니다 마지막으로 실행되었습니다. 그만큼count제한이 적용됩니다 각 명령에 별도로 (마지막 결과 만 실제로 반환됩니다). 한계는 숨겨진 곳에 적용되지 않습니다 규칙에 의해 생성 된 명령.

언제read_onlyisfalse, 사설 토토명령 카운터를 증가시키고 새로 계산합니다스냅 샷에서 각 명령을 실행하기 전에 끈. 전류가 있으면 실제로 스냅 샷이 변경되지 않습니다 트랜잭션 격리 수준은SERIALIZALE또는반복 가능 읽다하지만Committed모드 스냅 샷 업데이트는 각 명령이 새로의 결과를 볼 수 있도록합니다. 다른 세션에서 저지른 거래. 이것은 필수적입니다 명령이 수정 될 때 일관된 동작 데이터 베이스.

언제read_onlyistrue, 사설 토토스냅 샷 또는 명령 카운터를 업데이트하지 않으면 평원 만 허용select명령 명령 문자열에 나타납니다. 명령은 주변 쿼리를 위해 이전에 설정된 스냅 샷. 이것 실행 모드는 명령 당 오버 헤드 제거. 또한 진정으로 허용안정적인빌드 할 기능 : 이후 연속적인 실행은 모두 동일한 스냅 샷을 사용할 것입니다. 결과에는 변화가 없습니다.

일반적으로 읽기 전용 및 읽기 쓰기 명령을 혼합하는 것은 현명하지 않습니다. SPI를 사용한 단일 함수 내에서; 그것은 매우 생성 될 수 있습니다 읽기 전용 쿼리는 읽기 쓰기 쿼리로 수행 된 데이터베이스 업데이트 결과.

(마지막) 명령이 있었던 실제 행 수 실행 된 Global Variable에서 실행 된SPI_PROCESSED. 함수의 반환 값 인 경우 이다spi_ok_select, spi_ok_insert_returning, spi_ok_delete_returning또는spi_ok_update_returning, 그런 다음 글로벌을 사용할 수 있습니다 바늘spitupletable *spi_tuptableTO 결과 행에 액세스하십시오. 일부 유틸리티 명령 (예 :설명) 또한 행 세트를 반환하고spi_tuptable이 경우 결과를 포함합니다 도. 일부 유틸리티 명령 (COPY, 테이블 작성) 행 세트를 반환하지 마십시오. 그래서SPI_TUPTable는 null이지만 여전히 처리 된 행 수를 반환SPI_PROCESSED.

구조spitupletableis 이렇게 정의 됨 :

typedef struct

    MemoryContext tuptabcxt;    / * 결과 테이블의 메모리 컨텍스트 */
    UINT32 할당;        / * 할당 된 vals 수 */
    UINT32 무료;           / * 무료 VAL의 수 */
    tupledesc tupdesc;        / * 행 설명자 */
    heppuple *vals;           / * 행 */
 spitupletable;

vals는 다양한 포인터입니다 줄. (유효한 항목의 수는에 의해 제공됩니다.SPI_PROCESSED.)TupdescSPI 기능으로 전달할 수있는 행 디스크립터입니다. 줄로.tuptabcxt, 할당무료SPI 발신자가 사용하기위한 내부 필드입니다.

SPI_FINISH모든 것을 해방spitupletable전류 중에 할당되었습니다 절차. 특정 결과 테이블을 일찍 자유롭게 해제 할 수 있습니다. 전화를 통해 끝났습니다SPI_FREETUPTABLE.

인수

const char *명령

실행할 명령 포함

boolread_only

true읽기 전용 실행

Longcount

반환 할 최대 행 수, 또는0한계 없음

반환 값

명령의 실행이 성공적이면 다음 (음이 아닌) 값이 반환됩니다.

spi_ok_select

if aselect(하지만선택) 실행

spi_ok_selinto

if a선택실행

SPI_OK_INSERT

IF an삽입실행

SPI_OK_DELETE

if a삭제실행

SPI_OK_UPDATE

IF an업데이트실행

spi_ok_insert_returning

IF an리턴 삽입실행

spi_ok_delete_returning

if a반환 삭제실행

spi_ok_update_returning

IF an업데이트 반환실행

spi_ok_utility

유틸리티 명령 인 경우 (예 :생성 테이블) 실행

Spi_ok_rewritten

명령이 다른 종류의 명령으로 다시 작성된 경우 (예 :업데이트삽입) byPostgreSQL : 문서 : 9.3 : 사설 토토 시스템.

오류에서 다음 음수 값 중 하나가 반환됩니다.

SPI_ERROR_ARGUMENT

if명령isNULL또는count보다 작습니다 0

SPI_ERROR_COPY

ifstdout에 복사또는stdin에서 복사시도

SPI_ERROR_TRANSACTION

거래 조작 명령이 시도 된 경우 (시작, 커밋, 롤백, SavePoint, 거래 준비, 준비 준비, 롤백 준비또는 그 변형)

SPI_ERROR_OPUNKNOWN

명령 유형을 알 수없는 경우 (발생하지 않아야합니다)

SPI_ERROR_UNCONNECT

연결되지 않은 절차에서 호출 된 경우

노트

모든 SPI Query-Execution Functions Set 두 가지SPI_PROCESSEDandspi_tuptable(내용이 아닌 포인터 만 구조). 이 두 가지 글로벌 변수를 로컬에 저장하십시오 절차 변수 결과 테이블에 액세스 해야하는 경우사설 토토또는 다른 이후 통화에 걸친 쿼리-실행 함수.