2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 토토 캔 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.토토 : 문서 : 17 : SPI_PREPARE버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

SPI_prepare

SPI_prepare — 아직 실행하지 않고 명령문 준비

시놉시스

SPIPlanPtr SPI_prepare(상수 문자 *명령, 정수나르그, 오이드 *argtypes)

설명

SPI_prepare지정된 명령에 대해 준비된 명령문을 생성하고 반환하지만 명령을 실행하지는 않습니다. 준비된 문은 나중에 다음을 사용하여 반복적으로 실행될 수 있습니다.SPI_execute_plan.

동일하거나 유사한 명령을 반복적으로 실행해야 하는 경우 일반적으로 구문 분석을 한 번만 수행하는 것이 유리하며 더욱이 명령에 대한 실행 계획을 재사용하는 것이 유리할 수 있습니다.SPI_prepare명령 문자열을 구문 분석 결과를 캡슐화하는 준비된 명령문으로 변환합니다. 또한 준비된 문은 각 실행에 대한 사용자 지정 계획을 생성하는 것이 도움이 되지 않는 것으로 확인된 경우 실행 계획을 캐싱할 수 있는 장소를 제공합니다.

준비된 명령은 매개변수를 작성하여 일반화할 수 있습니다($1, $211507_11634SPI_execute_plan호출됩니다. 이를 통해 준비된 명령을 매개변수 없이 가능한 것보다 더 넓은 범위의 상황에서 사용할 수 있습니다.

다음에 의해 반환된 명령문SPI_prepare이후 C 함수의 현재 호출에만 사용할 수 있습니다.SPI_finish해당 명령문에 할당된 메모리를 해제합니다. 그러나 함수를 사용하면 명령문을 더 오랫동안 저장할 수 있습니다.SPI_keepplan또는SPI_saveplan.

인수

상수 문자 *명령

명령 문자열

int나그스

입력 매개변수 수($1, $2등)

오이드 *argtypes

다음을 포함하는 배열에 대한 포인터OID매개변수의 데이터 유형

반환 값

SPI_preparenull이 아닌 포인터를 반환합니다.SPIP플랜는 준비된 문을 나타내는 불투명 구조체입니다. 오류 발생 시,NULL반환될 것이며SPI_result에서 사용하는 것과 동일한 오류 코드 중 하나로 설정됩니다.SPI_execute(다음으로 설정된 경우 제외)SPI_ERROR_ARGUMENTif명령isNULL또는 만약나그스이 0보다 작거나 다음과 같은 경우나그스0보다 크고argtypesisNULL.

참고

매개변수가 정의되지 않은 경우 처음 사용할 때 일반 계획이 생성됩니다.SPI_execute_plan이며 모든 후속 실행에도 사용됩니다. 매개변수가 있는 경우 처음 몇 가지 사용은SPI_execute_plan제공된 매개변수 값에 특정한 사용자 정의 계획을 생성합니다. 동일한 준비된 명령문을 충분히 사용한 후,SPI_execute_plan일반 계획을 세울 것이며, 그것이 맞춤 계획보다 훨씬 비싸지 않다면 매번 다시 계획하는 대신 일반 계획을 사용하기 시작할 것입니다. 이 기본 동작이 적합하지 않은 경우 다음을 전달하여 변경할 수 있습니다.CURSOR_OPT_GENERIC_PLAN또는CURSOR_OPT_CUSTOM_PLAN다음에 플래그 지정SPI_prepare_cursor, 각각 일반 또는 사용자 정의 계획을 사용하도록 강제합니다.

준비된 문의 주요 요점은 반복적인 구문 분석 및 문의 계획을 피하는 것이지만,포스트그레SQL이전의 준비된 문의 사용 이후 문에 사용된 데이터베이스 개체가 정의(DDL) 변경을 거칠 때마다 문을 사용하기 전에 문을 강제로 재분석하고 다시 계획합니다. 또한, 값이검색_경로한 용도에서 다음 용도로 변경되면 명령문은 새로운 것을 사용하여 다시 구문 분석됩니다.검색_경로. (이 후자의 동작은 현재 새로운 것입니다.토토 캔9.3.) 참조준비Prepared 문의 동작에 대한 자세한 내용은.

이 함수는 연결된 C 함수에서만 호출되어야 합니다.

SPIPlanPtr은(는) 불투명 구조체 유형에 대한 포인터로 선언됩니다.spi.h. 해당 내용에 직접 액세스하려고 시도하는 것은 현명하지 않습니다. 그렇게 하면 향후 개정판에서 코드가 손상될 가능성이 훨씬 높아지기 때문입니다.토토 캔.

이름SPIPlanPtr데이터 구조에 더 이상 실행 계획이 반드시 포함되지 않으므로 다소 역사적입니다.