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

39.5. PL/TCL에서 데이터베이스 액세스

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

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

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

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

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

명령이 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매개 변수가없는 경우

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

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

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

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

쿼리 및 매개 변수의 방식을 제외하고SPI_EXECP똑같이 작용SPI_EXEC. 그만큼-count, -어레이루프 바디옵션은 동일합니다

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

기능 작성 t1_count (정수, 정수) 정수를 $$로 반환합니다

우리는 쿼리 문자열 내부에 백 슬래시가 필요합니다SPI_PREPARE$n마커가 통과됩니다SPI_PREPAREas-is

spi_lastoid

마지막으로 삽입 된 행의 OID를 반환합니다SPI_EXEC또는SPI_EXECP, 명령이 a삽입및 수정

QUOTE String

단일 견적과 백 슬래시의 모든 발생을 두 배로 늘립니다SPI_EXEC또는SPI_PREPARE. 예를 들어,

" '$ val'을 ret as"

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

ret as as as as ret

14982_15020SPI_EXEC또는SPI_PREPARE. 제대로 작동하려면

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

PL/토토 캔에서 형성 될 수 있습니다 :

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

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

elog 레벨 msg

로그 또는 오류 메시지를 제출합니다. 가능한 레벨은디버그, log, info, 통지, 경고, 오류치명적. 오류오류 조건을 제기합니다. 이것이 있다면오류명령.치명적거래를 중단하고 원인log_min_messagesandclient_min_messages구성 변수. 보다18 장더 많은 경우