토토 결과 — 아직 실행하지 않고 명령문 준비
SPIPlanPtr 토토 결과(상수 문자 *명령, 정수나그스, 오이드 *argtypes)
토토 결과지정된 명령에 대해 준비된 명령문을 생성하고 반환하지만 명령을 실행하지는 않습니다. 준비된 문은 나중에 다음을 사용하여 반복적으로 실행될 수 있습니다.SPI_execute_plan.
동일하거나 유사한 명령을 반복적으로 실행해야 하는 경우 일반적으로 구문 분석을 한 번만 수행하는 것이 유리하며 더욱이 명령에 대한 실행 계획을 재사용하는 것이 유리할 수 있습니다.토토 결과명령 문자열을 구문 분석 결과를 캡슐화하는 준비된 명령문으로 변환합니다. 또한 준비된 문은 각 실행에 대한 사용자 지정 계획을 생성하는 것이 도움이 되지 않는 것으로 확인된 경우 실행 계획을 캐싱할 수 있는 장소를 제공합니다.
준비된 명령은 매개변수를 작성하여 일반화할 수 있습니다($1, $211160_11287SPI_execute_plan호출됩니다. 이를 통해 준비된 명령을 매개변수 없이 가능한 것보다 더 넓은 범위의 상황에서 사용할 수 있습니다.
다음에 의해 반환된 명령문토토 결과이후 C 함수의 현재 호출에만 사용할 수 있습니다.SPI_finish해당 명령문에 할당된 메모리를 해제합니다. 그러나 함수를 사용하면 명령문을 더 오랫동안 저장할 수 있습니다.SPI_keepplan또는SPI_saveplan.
상수 문자 *명령명령 문자열
int나그스입력 매개변수 수 ($1, $2등)
오이드 *argtypes다음을 포함하는 배열에 대한 포인터OID매개변수의 데이터 유형
토토 결과null이 아닌 포인터를 반환합니다.SPIP플랜은 준비된 문을 나타내는 불투명 구조체입니다. 오류 발생 시,NULL반환될 것이며SPI_result에서 사용하는 것과 동일한 오류 코드 중 하나로 설정됩니다.SPI_execute(다음으로 설정된 경우 제외)SPI_ERROR_ARGUMENTif명령isNULL또는 if나그스이 0보다 작거나 다음과 같은 경우나그스0보다 크고argtypesisNULL.
매개변수가 정의되지 않은 경우 처음 사용할 때 일반 계획이 생성됩니다.SPI_execute_plan이며 모든 후속 실행에도 사용됩니다. 매개변수가 있는 경우 처음 몇 가지 사용은SPI_execute_plan제공된 매개변수 값에 특정한 사용자 정의 계획을 생성합니다. 동일한 준비된 명령문을 충분히 사용한 후,SPI_execute_plan일반 계획을 세울 것이며, 그것이 사용자 정의 계획보다 훨씬 비싸지 않다면 매번 다시 계획하는 대신 일반 계획을 사용하기 시작할 것입니다. 이 기본 동작이 적합하지 않은 경우 다음을 전달하여 변경할 수 있습니다.CURSOR_OPT_GENERIC_PLAN또는CURSOR_OPT_CUSTOM_PLAN다음에 플래그 지정토토 결과_cursor, 각각 일반 또는 사용자 정의 계획을 사용하도록 강제합니다.
준비된 진술의 주요 요점은 반복적인 구문 분석 및 진술 계획을 피하는 것이지만,PostgreSQL이전 준비된 명령문 사용 이후 명령문에 사용된 데이터베이스 객체가 정의(DDL) 변경을 거칠 때마다 명령문을 사용하기 전에 강제로 재분석 및 재계획을 수행합니다. 또한, 값이검색_경로한 용도에서 다음 용도로 변경되면 명령문은 새로운 것을 사용하여 다시 구문 분석됩니다.검색_경로. (이 후자의 동작은 현재 새로운 것입니다.포스트그레SQL9.3.) 참조준비Prepared 문의 동작에 대한 자세한 내용은.
이 함수는 연결된 C 함수에서만 호출되어야 합니다.
SPIPlanPtr은(는) 불투명 구조체 유형에 대한 포인터로 선언됩니다.spi.h. 해당 내용에 직접 액세스하려고 시도하는 것은 현명하지 않습니다. 그렇게 하면 향후 개정판에서 코드가 손상될 가능성이 훨씬 높아지기 때문입니다.PostgreSQL.
이름SPIPlanPtr데이터 구조에 더 이상 실행 계획이 반드시 포함되지 않으므로 다소 역사적입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.