SPI_EXEC
지정된 것을 실행합니다
에 대한 SQL 명령count행.
이 함수는 연결된 A에서만 호출해야합니다 절차. 만약에count는 0입니다 적용되는 모든 행에 대한 명령을 실행합니다. 만약에count는 0보다 크다 명령이 실행될 행 수는 다음과 같습니다. 제한적 (A와 매우 흡사Limit절). 예를 들어,
SPI_EXEC ( "탭에 삽입 * 탭에서 탭", 5);
표에 최대 5 개의 행을 삽입 할 수 있습니다.
하나의 문자열로 여러 명령을 전달하고 명령을 전달할 수 있습니다.
규칙에 의해 다시 작성 될 수 있습니다.SPI_EXEC
마지막으로 실행 된 명령의 결과를 반환합니다.
(마지막) 명령이 있었던 실제 행 수 실행 된 Global Variable에서 실행 된SPI_PROCESSED(반환 값이 아닌 한 함수는spi_ok_utility). 만약 함수의 반환 값은입니다.spi_ok_select그런 다음 글로벌 포인터 사용spitupletable *spi_tuptable액세스 결과 행.
구조spitupletableIS 이렇게 정의 됨 :
typedef struct MemoryContext tuptabcxt; / * 결과 테이블의 메모리 컨텍스트 */ UINT32 할당; / * 할당 된 vals 수 */ UINT32 무료; / * 무료 VAL의 수 */ tupledesc tupdesc; / * 행 설명자 */ heppuple *vals; / * 행 */ spitupletable;
vals는 다양한 포인터입니다 줄. (유효한 항목의 수는에 의해 제공됩니다.SPI_PROCESSED).Tupdesc전달할 수있는 행 설명자입니다 줄을 다루는 SPI 기능.Tuptabcxt, 할당및무료SPI 발신자가 사용하기위한 내부 필드입니다.
SPI_FINISH
모든 것을 해방spitupletable전류 중에 할당되었습니다
절차. 특정 결과 테이블을 일찍 자유롭게 해제 할 수 있습니다.
전화를 통해 끝났습니다SPI_FREETUPTABLE
.
명령의 실행이 성공하면 다음 (음이 아닌) 값이 반환됩니다.
if aselect(하지만선택 ... into) 실행
if a선택 ... into실행
if a삭제실행
IF an삽입실행
IF an업데이트실행
유틸리티 명령 인 경우 (예 :생성 테이블) 실행
오류에서 다음 음의 값 중 하나는입니다 반품 :
if명령isNULL또는countis 0 미만
ifstdout에 복사또는stdin에서 복사시도되었습니다
if선언, 닫기또는fetch시도
if시작, 커밋또는롤백시도
명령 유형을 알 수없는 경우 (발생하지 않아야합니다)
연결되지 않은 절차에서 호출 된 경우