이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다current버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

설명

Postgres함수 및 사설 토토 사이트 절차 이름

inPostgres, 하나 그리고 동일합니다 함수 이름은 논쟁의 수 또는 유형이 다릅니다. 이것은 충돌합니다 사설 토토 사이트 절차 이름. pl/사설 토토 사이트에서 동일한 유연성을 제공합니다 내부 사설 토토 사이트 절차 이름에는 프로 시저 PG_PROC ROW 이름의 일부로. 따라서 다릅니다 ArgType 버전의Postgres사설 토토 사이트에 대해 함수가 다릅니다 도.

함수 정의 pl/사설 토토 사이트

pl/사설 토토 사이트 언어로 함수를 만들려면 알려진 것을 사용하십시오. 통사론

기능 만들기funcName Argument-Types) 반환return-typeas '
    # pl/사설 토토 사이트 기능 본문
'언어'pl사설 토토 사이트 ';
쿼리 에서이 함수를 호출 할 때 인수는 다음과 같습니다. tcl 절차 본문에 변수 $ 1 ... $ n으로 제공됩니다. 그래서 조금 두 개의 int4 값 중 높이를 반환하는 최대 기능은 다음과 같습니다. 생성 :
함수 만들기 tcl_max (int4, int4)는 int4를 다시 반환합니다.
    if $ 1 $ 2 return $ 1
    $ 2를 반환합니다
'언어'pltcl ';
복합 유형 인수는 TCL로 절차에 제공됩니다. 배열. 배열의 요소 이름은 속성 이름입니다. 복합 유형. 실제 행의 속성에 NULL이있는 경우 값, 배열에는 나타나지 않습니다! 다음은 다음과 같습니다 OverPaid_2 함수를 정의합니다 (이전의 경우Postgres문서) PL/사설 토토 사이트
함수 생성 OverPaid_2 (EMP) BOOL을 반환합니다.
    if 200000.0 <$ 1 (급여) 
        "T"반환

    if $ 1 (Age) <30 && 100000.0 <$ 1 (Salary) 
        "T"반환

    "F"반환
'언어'pl사설 토토 사이트 ';

글로벌 데이터 pl/사설 토토 사이트

때때로 (특히 설명 된 SPI 기능을 사용할 때 나중에) 보유 된 전역 상태 데이터를 갖는 것이 유용합니다. 절차에 대한 두 호출 사이. 모든 PL/TCL 절차가 실행되었습니다 하나의 백엔드는 동일한 안전한 TCL 통역사를 공유합니다. 보호를 돕기 위해 PL/TCL 절차 부작용에서 배열을 사용할 수 있습니다. upvar 명령을 통한 각 절차. 이것의 글로벌 이름 변수는 내부 이름이고 로컬 이름은 절차입니다. GD.

트리거 절차 pl/사설 토토 사이트

트리거 절차가에 정의되어 있습니다.Postgres인수가없는 함수와 a 불투명의 반환 유형. PL/사설 토토 사이트 언어도 있습니다.

트리거 관리자의 정보는 다음 변수의 절차 본문 :

$ tg_name

생성 트리거에서 트리거의 이름 성명.

$ tg_relid

트리거 절차를 일으킨 테이블의 객체 ID 불러야한다.

$ tg_relatts

테이블 필드 이름의 사설 토토 사이트 목록 비어 있습니다. 목록 요소. 그래서 목록에서 요소 이름을 찾고 lsearch 사설 토토 사이트 명령은 동일한 양수를 반환합니다 PG_ATTRIBUTE에서 필드가 번호가 매겨 지므로 1에서 시작합니다. 시스템 카탈로그.

$ tg_when

이벤트에 따라 전후에 문자열 트리거 콜.

$ tg_level

이벤트에 따라 문자열 행 또는 명령문 트리거 콜.

$ tg_op

이벤트에 따라 문자열 삽입, 업데이트 또는 삭제 방아쇠 통화의.

$ new

새 테이블 행의 값을 포함하는 배열 on 작업 삽입/업데이트 또는 삭제에서 비워

$ old

오래된 테이블 행의 값을 포함하는 배열 작업 업데이트/삭제 또는 삽입물에서 빈

$ gd

위에서 설명한대로 글로벌 상태 데이터 배열.

$ args

트리거 문을 만듭니다. 논쟁은 또한 액세스 할 수 있습니다 절차 기관의 $ 1 ... $ n.

트리거 프로 시저의 리턴 값은 문자열 중 하나입니다. 확인 또는 건너 뛰거나 '배열 get'사설 토토 사이트 명령에서 반환 된 목록. 반환 값이 정상이면 정상 작업입니다 (삽입/업데이트/삭제)이 트리거를 해고 한 결과가 발생합니다. 분명히 Skip은 트리거 관리자에게 조용히 억제하도록 지시합니다. 작업. '배열 get'의 목록은 pl/사설 토토 사이트에게 대신 삽입 될 트리거 관리자로 수정 된 행 $ 새로 제공되는 것 (삽입/업데이트 만). 말할 것도없이 이 모든 것이 방아쇠가 전후에있을 때만 의미가 있습니다. 열.

정수를 강요하는 작은 예제 트리거 절차가 있습니다. 업데이트의 #을 추적하기위한 테이블의 가치 행에서 수행되었습니다. New Row가 삽입 된 경우 값은입니다 0으로 초기화 한 다음 모든 업데이트에서 증가했습니다 작업:

함수 만들기 trigfunc_modcount ()는 불투명 한 반환 '
    스위치 $ tg_op 
        삽입 
            새 ($ 1) 0을 설정하십시오

        업데이트 
            새로 설정 ($ 1) $ old ($ 1)
            새로운 새로운 ($ 1)

        기본 
            OK를 반환합니다

    반환 [배열이 새로워지기]
'언어'pltcl ';

테이블 mytab (num int4, modcnt int4, desc 텍스트)을 작성합니다.

mytab에 삽입하거나 업데이트하기 전에 trigger trig_mytab_modcount를 만듭니다
    각 행마다 실행 절차 trigfunc_modcount ( 'modcnt');

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

다음 명령은 데이터베이스에 액세스 할 수 있습니다. PL/TCL 절차의 본문 :

elog레벨 MSG

로그 메시지를 발사하십시오. 가능한 레벨은 통지, 경고, 오류, 치명적, 디버그 및 무인처럼elogC 함수.

QUOTEString

단일 견적 및 백 슬래시의 모든 발생을 복제합니다 캐릭터. 변수가 사용될 때 사용해야합니다. 주어진 쿼리 문자열SPI_EXEC또는SPI_PREPARE(값 목록이 아님 에SPI_EXECP). 쿼리에 대해 생각하십시오 like

" '$ val'을 ret as"
사설 토토 사이트 변수 VAL에 실제로 "그렇지 않음"이 포함되어 있습니다. 이것 최종 쿼리 문자열을 초래할 것입니다
"선택 '하지 말아'ret '
동안 구문 분석 오류를 일으키는 원인SPI_EXEC또는SPI_PREPARE. 그것 포함해야합니다
"선택한 'dis'dos '로 ret'
"선택 '[[QUOTE $ val]' 'AS RET"
SPI_EXEC? -COUNTn? ?-정렬이름?쿼리?루프 바디?

쿼리를 위해 Parser/Planner/Optimizer/Executor에 전화하십시오. 그만큼 선택적 -수수 값이SPI_EXEC쿼리에서 처리 할 최대 행 수.

쿼리가 select 문이고 선택 사항 인 경우 루프 바디 (Foreach 문과 같은 TCL 명령의 본문) 주어지면 선택된 각 행에 대해 평가되고 동작합니다. 계속/break에 예상되는 것처럼. 선택된 필드의 값 열 이름으로 명명 된 변수에 넣습니다. 그래서 A

SPI_EXEC "PG_PROC에서 CNT로 COUNT (*)를 선택하십시오
변수 $ cnt를 PG_PROC 시스템 카탈로그. 옵션 -ARRAY가 제공되면 열이 있습니다 값은 '이름'이라는 이름의 연관 배열에 저장됩니다. 개별 변수 대신 열 이름.
SPI_EXEC -ARRAY C "선택 *에서 pg_class"
    Elog Debug "Table $ C (Relname)가 있습니다.
PG_CLASS의 모든 행에 대한 디버그 로그 메시지를 인쇄합니다. 그만큼 반환 값SPI_EXEC는 수입니다 글로벌 변수에서 찾은대로 쿼리에 의해 영향을받는 행 spi_proced.
SPI_PREPARE쿼리 typelist

나중에 실행을위한 쿼리 계획을 준비하고 저장합니다. 그것은입니다 계획이 Toplevel 메모리 컨텍스트에 자동으로 복사되었습니다. 따라서, 현재 저축하지 않고 계획을 준비 할 방법이 없습니다. 그것.

쿼리 참조 인수 인 경우 유형 이름은 TCL 목록으로 제공됩니다. spi_prepare의 반환 값은 a입니다 SPI_EXECP에 대한 후속 호출에서 사용할 쿼리 ID. 보다 샘플 용 SPI_EXECP.

SPI_EXEC? -COUNTn? ?-정렬이름? ? -nullsString?쿼리?Value-List? ?루프 바디?

변수와 함께 SPI_PREPARE에서 준비된 계획을 실행합니다 치환. 선택적 -Count 값은 spi_execp를 알려줍니다 쿼리에서 처리 할 최대 행 수.

-nulls의 선택적 값은 공백의 문자열이며 'n'입니다. spi_execp에게 말하는 문자는 어떤 값이 null이라고 말하는지. 만약에 주어진 것은 정확히 수의 길이를 가져야합니다. 값.

QueryId는 SPI_PREPARE CALL에 의해 반환 된 ID입니다.

SPI_PREPARE에 주어진 타이틀리스트가있는 경우 TCL 목록 정확히 같은 길이의 값은 spi_execp에 제공되어야합니다. 쿼리 후. SPI_PREPARE의 유형 목록이 비어 있으면 이 주장은 생략되어야합니다.

쿼리가 select 문인 경우 설명 된 것과 동일합니다. SPI_EXEC의 경우 루프 바디 및 변수에 대해 발생합니다. 선택된 필드.

준비된 것을 사용하여 PL/사설 토토 사이트 기능의 예입니다. 계획:

함수 만들기 t1_count (int4, int4)는 int4를 다시 반환합니다.
    ! [정보가 gd (plan)] 가 있다면
        # 첫 번째 통화에 저장된 계획을 준비합니다
        GD 설정 (계획) [SPI_PREPARE \\
                "num = \\ $ 1, num <= \\ $ 2"\\에서 cnt로 cnt (*)를 선택하십시오.
                int4]

    SPI_EXECP -COUNT 1 $ gd (계획) [목록 $ 1 $ 2]
    $ CNT를 반환합니다
'언어'pltcl ';
TCL이보아야 할 각 백 슬래시는 두 배가되어야합니다. 메인 파서가 프로세스하기 때문에 함수 생성 쿼리에서 생성 기능에도 백 슬래시. 주어진 쿼리 문자열 내부 SPI_PREPARE에게 매개 변수를 표시하려면 실제로 달러 표시가되어야합니다. 위치와 $ 1의 가치로 대체되지 않도록 첫 번째 기능 호출.
모듈 및 알 수없는 명령

pl/사설 토토 사이트은 자주 사용되는 것들에 대한 특별한 지원을 가지고 있습니다. 그것 pl사설 토토 사이트_modules와 pl사설 토토 사이트_modfuncs의 두 마법 테이블을 인식합니다. 이들이 존재하면 '알 수없는'모듈이 창조 직후 통역사. 알려지지 않은 사설 토토 사이트 일 때마다 절차가 호출되고, 알 수없는 Proc는 절차는 모듈 중 하나에 정의됩니다. 이것이 사실이라면 모듈은 주문형으로로드됩니다. 이 동작을 가능하게하기 위해 PL/사설 토토 사이트 호출 핸들러는 컴파일해야합니다 -dpl사설 토토 사이트_unknown_support set.

이 테이블을 소스를 포함한 PL/사설 토토 사이트 소스의 모듈 서브 디렉토리 처음에 설치 해야하는 알 수없는 모듈의 경우