Postgresql 9.3.25 문서 | ||||
---|---|---|---|---|
토토 : 문서 : 9.3 : PL/TCL의 글로벌 데이터 | PostgreSQL : 문서 : 9.3 : PL/메이저 토토 사이트 -메이저 토토 사이트 절차 언어 | CHAPTER 41. PL/사설 토토 사이트- 사설 토토 사이트 절차 | PostgreSQL : 문서 : 9.3 : PL/배트맨 토토의 트리거 절차 |
다음 명령은 데이터베이스에 액세스 할 수 있습니다. PL/TCL 기능의 본문 :
SPI_EXEC
?-countn? ?-array이름?명령?루프 바디?문자열로 주어진 SQL 명령을 실행합니다. 오류
명령으로 인해 오류가 발생합니다. 그렇지 않으면 반환 값입니다
의SPI_EXEC
는 행의 수입니다
명령에 의해 처리 된 (선택, 삽입, 업데이트 또는 삭제),
또는 명령이 유틸리티 명령문 인 경우 0. 또한
명령은입니다.select진술, 값
선택된 열의는 설명대로 사설 토토 사이트 변수에 배치됩니다.
아래에.
선택 사항-count값이SPI_EXEC
최대 행 수
명령에서 처리합니다. 이것의 효과는 비슷합니다
쿼리를 커서로 설정 한 다음fetchn.
명령이 a 인 경우select진술, 결과 열의 값은 TCL 변수에 배치됩니다. 열에 이름을 따서 명명되었습니다. 인 경우-array옵션이 제공되며, 열 값은 대신 요소에 저장됩니다. 명명 된 연관 배열의 열 이름이 배열로 사용됩니다. 인덱스. 또한 결과 내의 현재 행 번호가 있습니다 (0에서 카운트)라는 배열 요소에 저장됩니다".Tupno", 해당 이름이 결과에서 열 이름으로 사용되지 않는 한.
명령이 a 인 경우select진술
그리고 아니루프 바디스크립트가 제공됩니다.
그러면 첫 번째 결과 행만이 사설 토토 사이트 변수에 저장되거나
배열 요소; 나머지 행은 무시됩니다. 저장 없음
쿼리가 행을 반환하지 않으면 발생합니다. (이 경우는 감지 할 수 있습니다
의 결과 확인SPI_EXEC
.)
예:
SPI_EXEC "PG_PROC에서 CNT로 COUNT (*)를 선택하십시오
사설 토토 사이트 변수를 설정합니다$ cnt의 행 수PG_PROC시스템 목록.
선택 사항 인 경우루프 바디인수가 주어지면, 그것은 실행되는 사설 토토 사이트 스크립트입니다. 쿼리 결과의 각 행에 대해 한 번. (루프 바디주어진 명령이 있으면 무시됩니다 아님select.) 전류 값 Row의 열은 사설 토토 사이트 변수 또는 배열 요소에 저장됩니다. 각 반복 전에. 예를 들어:
SPI_EXEC -ARRAY C "선택 *에서 pg_class" Elog Debug "Table $ C (Relname)가 있습니다.
모든 행에 대한 로그 메시지를 인쇄합니다pg_class. 이 기능은 다른 사설 토토 사이트과 유사하게 작동합니다 구조물 루핑; 특히계속andbreak내부의 일반적인 방식으로 작업하십시오 루프 바디.
쿼리 결과 열이 null이면 대상 변수 그것은"Unset"설정되지 않고.
SPI_PREPARE
쿼리 typelist나중에 실행을위한 쿼리 계획을 준비하고 저장합니다. 저장된 현재 세션의 수명에 대한 계획은 유지됩니다.
쿼리는 매개 변수, 즉 값에 대한 자리 표시자를 사용할 수 있습니다. 계획이 실제로 실행될 때마다 제공됩니다. 쿼리에서 문자열, 기호별로 매개 변수를 참조하십시오$ 1 ... $n. 쿼리가 매개 변수를 사용하는 경우 매개 변수 유형의 이름은 TCL 목록으로 제공되어야합니다. (쓰기 빈 목록typelist매개 변수가 사용됩니다.)
반환 값SPI_PREPARE
후속 호출에서 사용되는 쿼리 ID입니다SPI_EXECP
. 보다SPI_EXECP
예를 들어.
SPI_EXECP
?-countn? ?-어레이이름? ?-nullsString?QueryId?Value-List?
?루프 바디?이전에 준비한 쿼리 실행SPI_PREPARE
. QueryIdSPI_PREPARE
. 쿼리가 매개 변수를 참조하는 경우
에이Value-List제공해야합니다. 이것
매개 변수에 대한 실제 값의 TCL 목록입니다. 목록은 있어야합니다
이전에 주어진 매개 변수 유형 목록과 동일한 길이SPI_PREPARE
. 생략Value-List쿼리에 없음이없는 경우
매개 변수.
선택적 값-nullsis
공간의 끈과'n'캐릭터
말함SPI_EXECP
매개 변수는 널 값입니다. 주어지면 정확히 동일해야합니다
길이Value-List. 그렇다면
주어지지 않으면 모든 매개 변수 값은 Nonnull입니다.
쿼리 및 매개 변수가있는 방식을 제외하고
지정,SPI_EXECP
똑같이 작용SPI_EXEC
. 그만큼-count, -array및루프-바디옵션은 동일합니다
결과 값도 마찬가지입니다.
준비된 것을 사용한 PL/TCL 기능의 예는 다음과 같습니다. 계획:
기능 작성 t1_count (정수, 정수) 정수를 $$로 반환합니다 ! [정보가 gd (plan)] 가 있다면 # 첫 번째 통화에 저장된 계획을 준비합니다 GD 설정 (계획) [SPI_PREPARE \ "num = \ $ 1, num <= \ $ 2"\에서 cnt로 cnt (*)를 선택하십시오. [List Int4 Int4]] SPI_EXECP -COUNT 1 $ gd (계획) [목록 $ 1 $ 2] $ CNT를 반환합니다 $$ 언어 pltcl;
우리는 쿼리 문자열 내부에 백 슬래시가 필요합니다SPI_PREPARE
$n마커
로 전달됩니다.SPI_PREPARE
AS-IS, 사설 토토 사이트 변수 대체로 대체되지 않았습니다.
spi_lastoid
마지막으로 삽입 된 행의 OID를 반환합니다SPI_EXEC
또는SPI_EXECP
, 명령이 단일 줄인 경우삽입및 수정 된 테이블이 포함되어 있습니다
OIDS. (그렇지 않으면 0이됩니다.)
QUOTE
String단일 인용문과 백 슬래시 문자의 모든 발생을 두 배로 늘립니다
주어진 문자열에서. 이것은 현을 안전하게 인용하는 데 사용될 수 있습니다
주어진 SQL 명령에 삽입되어야합니다SPI_EXEC
또는SPI_PREPARE
. 예를 들어, SQL에 대해 생각하십시오
명령 문자열 :
" '$ val'을 ret as"
여기서 사설 토토 사이트 변수val실제로 포함그렇지 않음. 이것은 결과를 초래할 것입니다 최종 명령 문자열 :
ret as as as as ret
이 동안 구문 분석 오류가 발생합니다SPI_EXEC
또는SPI_PREPARE
. 제대로 작동하기 위해 제출했습니다
명령은 다음을 포함해야합니다 :
선택한 'does n't'as at ret
PL/사설 토토 사이트에서 형성 될 수 있습니다 :
"선택 '[[QUOTE $ val]' 'AS ret"
하나의 이점SPI_EXECP
이와 같은 매개 변수 값을 인용 할 필요는 없습니다.
매개 변수는 SQL 명령 문자열의 일부로 구문 분석되지 않습니다.
elog
레벨 MSG로그 또는 오류 메시지를 제출합니다. 가능한 레벨은디버그, log, info, 통지, 경고, 오류및치명적. 오류오류 조건을 제기합니다. 이것이 갇히지 않으면 TCL 코드를 둘러싼 오류는 호출로 전파됩니다. 쿼리, 현재 트랜잭션 또는 뺄셈이 발생합니다 중단. 이것은 사실상 TCL과 동일합니다오류명령.치명적aborts 거래로 현재 세션이 종료됩니다. (거기 PL/TCL 에서이 오류 수준을 사용해야 할 좋은 이유가 아닐 것입니다. 기능은 있지만 완전성을 위해 제공됩니다.) 다른 수준 우선 순위가 다른 메시지 만 생성합니다. 이든 특정 우선 순위의 메시지는 고객에게보고됩니다. 서버 로그에 작성되었거나 둘 다에 의해 제어됩니다.log_min_messagesandclient_min_messages구성 변수. 보다범퍼카 토토 : 문서 : 9.3 : 서버 구성자세한 내용은
이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
글로벌 데이터 pl/사설 토토 사이트 | PostgreSQL : 문서 : 9.3 : PL/메이저 토토 사이트 -메이저 토토 사이트 절차 언어 | 트리거 프로 시저 pl/사설 토토 사이트 |