이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 42.5. PL/롤 토토에서 데이터베이스 액세스버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

38.5. PL/토토 사이트에서 데이터베이스 액세스

데이터베이스에 액세스하기 위해 다음 명령을 사용할 수 있습니다

SPI_EXEC?-countn? ?-array이름?명령?루프 바디?

문자열로 주어진 SQL 명령을 실행합니다. 오류SPI_EXECisselect진술, 값

선택 사항-countvalue ketsSPI_EXEC최대 숫자fetchn.

명령이 a 인 경우select문, 결과 열의 값이-array옵션이 제공되고 열 값이 제공됩니다

명령이 a 인 경우select진술 및 아니오루프 바디스크립트가 제공되면 첫 번째 결과 행만SPI_EXEC.) 예 :

SPI_EXEC "PG_PROC에서 CNT로 COUNT (*)를 선택하십시오

토토 사이트 변수를 설정합니다$ cnt의 행 수로PG_PROC시스템 카탈로그.

선택 사항 인 경우루프 바디인수가 주어지면 a루프 바디주어진 경우 무시됩니다select.)

SPI_EXEC -ARRAY C "선택 *에서 pg_class"

모든 행에 대한 로그 메시지를 인쇄합니다pg_class. 이 기능은와 유사하게 작동합니다계속andbreak루프 본체 내부의 일반적인 방식으로 작업하십시오.

쿼리 결과 열이 null이면 대상이"Unset"설정되지 않고.

SPI_PREPARE 쿼리 typelist

나중에 실행을위한 쿼리 계획을 준비하고 저장합니다. 그만큼

쿼리는 매개 변수, 즉 자리 표시자를 사용할 수 있습니다$ 1 ... $n. 만약typelist매개 변수가없는 경우pg_type; 예를 들어int4notInteger.

|SPI_PREPARE사용되는 쿼리 ID입니다SPI_EXECP. 보다SPI_EXECP예를 들어.

SPI_EXECP?-countn? ?-array이름? ?-nullsString?QueryId?Value-List?루프 바디?

이전에 준비한 쿼리 실행SPI_PREPARE.QueryIdSPI_PREPARE. 쿼리 인 경우Value-List제공해야합니다. 이것은SPI_PREPARE. 생략Value-List쿼리에 없음이없는 경우

선택적 값-nulls공백의 문자열입니다'n'캐릭터 텔링SPI_EXECP매개 변수 중 null 값은 어떤 매개 변수입니다. 주어지면, 그것은해야합니다Value-List. 주어지지 않으면 모두

쿼리 및 매개 변수의 방식을 제외하고SPI_EXECPSPI_EXEC. 그만큼-count,-array루프 바디옵션은 동일합니다

준비된 것을 사용한 PL/TCL 기능의 예는 다음과 같습니다.

함수 만들기 t1_count (정수, 정수) 정수를 반환합니다.

토토 사이트이보아야 할 각 백 슬래시는생성. 쿼리 문자열 내부에 백 슬래시가 필요합니다SPI_PREPARETO$n마커가 통과됩니다SPI_PREPAREas-is

spi_lastoid

마지막으로 삽입 된 행의 OID를 반환합니다SPI_EXEC또는SPI_EXECP, 명령이 a삽입. (그렇지 않다면, 당신

QUOTE String

단일 인용구와 백 슬래시의 모든 발생을 복제합니다SPI_EXEC또는SPI_PREPARE. 예를 들어,

" '$ val'을 ret as"

여기서 토토 사이트 변수val실제로 포함그렇지 않음. 이것

선택한 'do n't'as as ret

이 동안 구문 분석 오류가 발생합니다SPI_EXEC또는SPI_PREPARE. 제출 된 명령은

선택한 'dos ​​n't'as at ret

PL/토토 사이트에서 형성 될 수있는

" '[QUOTE $ val]' 'AS RET" 선택

하나의 이점SPI_EXECP이와 같은 매개 변수 값을 인용 할 필요가 없다는 것입니다.

elog 레벨 MSG

로그 또는 오류 메시지를 방출합니다. 가능한 레벨은디버그,log,info,통지,경고,오류치명적. 대부분은 단순히 주어진을 방출합니다elogc오류오류가 발생합니다치명적거래를 중단하고