| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 토토 : 문서 : 9.3 : PL/TCL의 글로벌 데이터 | PostgreSQL : 문서 : 9.3 : PL/메이저 토토 사이트 -메이저 토토 사이트 절차 언어 | 41장. PL/사설 토토 사이트 - 사설 토토 사이트 절차적 언어 | PostgreSQL : 문서 : 9.3 : PL/배트맨 토토의 트리거 절차 | |
다음 명령은 다음에서 데이터베이스에 액세스하는 데 사용할 수 있습니다. PL/Tcl 함수의 본문:
spi_exec
?-개수n? ?-배열이름? 명령 ?루프-본문?문자열로 제공된 SQL 명령을 실행합니다. 오류가 발생했습니다.
명령으로 인해 오류가 발생합니다. 그렇지 않으면 반환 값
의spi_exec행 수입니다.
명령에 의해 처리(선택, 삽입, 업데이트 또는 삭제)됩니다.
또는 명령이 유틸리티 명령문인 경우 0입니다. 또한,
명령은선택문, 값
선택한 열 중 설명된 대로 Tcl 변수에 배치됩니다.
아래.
선택사항-개수가치가 말해주는 것spi_exec최대 행 수
명령에서 처리합니다. 이것의 효과는 다음과 같습니다.
쿼리를 커서로 설정한 다음 다음과 같이 말합니다.가져오기n.
명령이 다음과 같은 경우선택116PostgreSQL: 문서: 9.3: PL/Tcl에서 데이터베이스 액세스52-배열옵션이 주어지면 열 값이 대신 요소에 저장됩니다. 열 이름이 배열로 사용되는 명명된 연관 배열 인덱스. 또한 결과 내의 현재 행 번호 (0부터 계산)은라는 배열 요소에 저장됩니다.".tupno", 해당 이름이 결과에서 열 이름으로 사용되지 않는 한.
명령이 다음과 같은 경우선택성명
그리고 아니루프-본문스크립트가 주어졌습니다.
그런 다음 결과의 첫 번째 행만 Tcl 변수에 저장됩니다.
배열 요소; 나머지 행은 무시됩니다. 저장하지 않음
쿼리가 행을 반환하지 않는 경우 발생합니다. (이 경우는 다음을 통해 감지할 수 있습니다.
결과 확인 중spi_exec.)
예:
spi_exec "SELECT count(*) AS cnt FROM pg_proc"
사설 토토 사이트 변수를 설정합니다$cnt에 의 행 수pg_proc시스템 카탈로그.
선택사항인 경우루프-본문인수가 주어지면 실행되는 사설 토토 사이트 스크립트의 일부입니다. 쿼리 결과의 각 행에 대해 한 번씩. (루프-본문주어진 명령이 다음과 같은 경우 무시됩니다. 아니선택.) 현재 값 행의 열은 Tcl 변수 또는 배열 요소에 저장됩니다. 각 반복 전에. 예를 들면:
spi_exec -array C "SELECT * FROM pg_class" 
    elog DEBUG "테이블 $C(relname) 있음"
다음의 모든 행에 대한 로그 메시지를 인쇄합니다.pg_class. 이 기능은 다른 사설 토토 사이트과 유사하게 작동합니다. 루핑 구조; 특히계속그리고휴식내부에서는 평소와 같이 작업하세요 루프 본문.
쿼리 결과의 열이 null인 경우 대상 변수는 그것은"설정 해제"설정되지 않고.
spi_prepare 질의 유형 목록나중 실행을 위해 쿼리 계획을 준비하고 저장합니다. 저장된 계획은 현재 세션 기간 동안 유지됩니다.
쿼리는 매개변수, 즉 값에 대한 자리 표시자를 사용할 수 있습니다. 계획이 실제로 실행될 때마다 공급됩니다. 쿼리에서 문자열, 기호로 매개변수 참조$1 ... $n. 쿼리에서 매개변수를 사용하는 경우 매개변수 유형의 이름은 Tcl 목록으로 제공되어야 합니다. (쓰기 빈 목록유형 목록아니면 매개변수가 사용됩니다.)
다음의 반환 값spi_prepare다음 호출에 사용할 쿼리 ID입니다.spi_execp. 참조spi_execp예를 들어.
spi_execp
?-개수n? ?-배열이름? ?-null문자열?
쿼리ID ?값 목록?
?루프-본문?이전에 준비된 쿼리를 실행합니다.spi_prepare. 쿼리ID다음에서 반환한 ID입니다.spi_prepare. 쿼리가 매개변수를 참조하는 경우
에값 목록반드시 제공되어야 합니다. 이
매개변수에 대한 실제 값의 Tcl 목록입니다. 목록은 다음과 같아야 합니다.
이전에 제공된 매개변수 유형 목록과 동일한 길이spi_prepare. 생략값 목록쿼리가 없는 경우
매개변수.
다음에 대한 선택적 값-널은
공백 문자열 및'n'문자
말하다spi_execp둘 중 어느 것
매개변수가 널값입니다. 주어지면 정확히 동일해야 합니다.
길이는값 목록. 그렇다면
지정되지 않았으므로 모든 매개변수 값이 null이 아닙니다.
쿼리와 해당 매개변수가
지정됨,spi_execp다음과 같이 작동합니다spi_exec.-개수, -배열및루프-본문옵션은 동일하며,
결과 값도 마찬가지입니다.
다음은 준비된 PL/Tcl 함수의 예입니다. 계획:
CREATE FUNCTION t1_count(정수, 정수) $$로 정수를 반환합니다.
    if ![ 정보가 존재하는 경우 GD(plan) ] 
        # 첫 번째 호출에서 저장된 계획을 준비합니다.
        GD 설정(계획) [ spi_prepare \
                "SELECT count(*) AS cnt FROM t1 WHERE num = \$1 AND num <= \$2" \
                [ 목록 int4 int4 ] ]
    spi_execp -count 1 $GD(계획) [ 목록 $1 $2 ]
    $cnt 반환
$$ 언어 pltcl;
다음에 제공된 쿼리 문자열 내에 백슬래시가 필요합니다.spi_prepare다음을 보장하기 위해$n마커
다음으로 전달됩니다.spi_prepare그대로, 사설 토토 사이트 변수 대체로 대체되지 않음.
spi_lastoid마지막으로 삽입된 행의 OID를 반환합니다.spi_exec또는spi_execp, 명령이 단일 행인 경우삽입및 수정된 테이블이 포함되어 있습니다.
OID. (그렇지 않으면 0을 얻습니다.)
인용문 문자열작은따옴표 및 백슬래시 문자의 모든 발생을 두 배로 늘립니다.
주어진 문자열에서. 이는 다음과 같은 문자열을 안전하게 인용하는 데 사용할 수 있습니다.
주어진 SQL 명령에 삽입됩니다.spi_exec또는spi_prepare. 예를 들어, SQL에 대해 생각해 보세요.
다음과 같은 명령 문자열:
"'$val' AS ret 선택"
여기서 사설 토토 사이트 변수발사실 포함그렇지 않습니다. 이로 인해 최종 명령 문자열:
재개로 '하지 않음' 선택
이 과정에서 구문 분석 오류가 발생합니다.spi_exec또는spi_prepare. 제대로 작동하려면 제출된
명령에는 다음이 포함되어야 합니다.
재개로 '하지 않음' 선택
다음을 사용하여 PL/Tcl에서 형성될 수 있습니다.
"SELECT '[ quote $val ]' AS ret"
다음의 장점 중 하나spi_execp그건
이와 같이 매개변수 값을 인용할 필요는 없습니다.
매개변수는 SQL 명령 문자열의 일부로 구문 분석되지 않습니다.
elog 레벨 msg로그 또는 오류 메시지를 내보냅니다. 가능한 수준은 다음과 같습니다.디버그, 로그, 정보, 공지, 경고, 오류및치명적. 오류오류 조건을 발생시킵니다. 이것이 갇히지 않았다면 Tcl 코드 주변에서 오류가 호출로 전파됩니다. 쿼리로 인해 현재 트랜잭션이나 하위 트랜잭션이 중단되었습니다. 이는 사실상 Tcl과 동일합니다.오류명령.치명적중단 트랜잭션이 종료되고 현재 세션이 종료됩니다. (거기서 PL/Tcl에서 이 오류 수준을 사용하는 것은 아마도 좋은 이유가 아닐 것입니다. 기능을 제공하지만 완전성을 위해 제공됩니다.) 기타 레벨 서로 다른 우선순위 수준의 메시지만 생성합니다. 여부 특정 우선순위의 메시지가 클라이언트에 보고됩니다. 서버 로그에 기록되거나 둘 다에 의해 제어됩니다.log_min_messages그리고client_min_messages구성 변수. 참조범퍼카 토토 : 문서 : 9.3 : 서버 구성더 많은 정보를 원하시면.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 | 
| 글로벌 데이터 PL/사설 토토 사이트 | PostgreSQL : 문서 : 9.3 : PL/메이저 토토 사이트 -메이저 토토 사이트 절차 언어 | 트리거 절차 PL/사설 토토 사이트 |