이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다토토 사이트 : 문서 : 17 : 40 장. 절차 언어버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

23 장. 절차 토토 캔

Postgres사용자가 추가 할 수 있습니다 작문 기능에 사용할 수있는 새로운 프로그래밍 토토 캔 그리고 절차. 이것들은라고합니다.절차 토토 캔(pl). 함수 또는 트리거의 경우 절차 적 언어로 작성된 절차, 데이터베이스 서버 기능을 해석하는 방법에 대한 내장 지식이 없습니다. 소스 텍스트. 대신, 작업은 특별 핸들러에게 전달됩니다 그것은 언어의 세부 사항을 알고 있습니다. 핸들러도 할 수 있습니다 구문 분석, 구문 분석, 실행 등의 모든 작업을 수행하십시오. 그 자체, 또는 그것은"접착제"사이Postgres및 기존 프로그래밍 토토 캔 구현. 핸들러 자체는 a 특수 프로그래밍 토토 캔 기능 공유로 컴파일됩니다 개체 및 주문형으로로드.

새로운 절차 토토 캔에 대한 핸들러 작성은 일부 정보가 제공되지만이 설명서의 범위 토토 캔 참조 페이지 작성. 여러 절차 토토 캔 표준에서 사용할 수 있습니다Postgres배포.

23.1. 절차 토토 캔 설치

절차 적 토토 캔는이어야합니다."설치"가있는 각 데이터베이스에 사용된. 그러나 템플릿에 설치된 절차 언어 1 데이터베이스는 다음과 같이 자동으로 사용할 수 있습니다 생성 된 데이터베이스. 따라서 데이터베이스 관리자가 결정할 수 있습니다 데이터베이스를 사용할 수있는 언어 및 그가 선택한 경우 기본적으로 사용할 수있는 일부 언어.

표준 배포와 함께 제공되는 토토 캔의 경우, 쉘 스크립트Createlang세부 사항을 손으로 수행하는 대신 사용됩니다. 예를 들어, PL/PGSQL을 Template1 데이터베이스에 설치하려면 사용

Createlang plpgsql template1
아래 설명 된 수동 절차는 권장됩니다 맞춤 토토 캔 설치Createlang

매뉴얼 절차 토토 캔 설치

절차 토토 캔가 데이터베이스에 설치됩니다 데이터베이스가 수행 해야하는 세 단계 슈퍼 유저.

  1. 토토 캔 핸들러의 공유 객체는 있어야합니다 적절한 라이브러리에 컴파일 및 설치 예배 규칙서. 이것은 건물과 같은 방식으로 작동합니다 일반 사용자 정의 C 기능이있는 모듈 설치 하다; 보다섹션 13.4.6.

  2. 핸들러는 명령으로 선언해야합니다

    함수 생성handler_function_name()
        불투명하게 반환합니다
        '경로-공유-개체' 토토 캔 'C';
    특수 반환 유형opaque이 함수가 정의 된 것 중 하나를 반환하지 않는 데이터베이스SQL데이터 유형이며 직접적이지 않습니다 사용 가능SQL진술.
  3. PL은 명령으로 선언해야합니다

    만들기 [신뢰할 수있는] [절차] 토토 캔 '토토 캔 이름'
        매니저handler_function_nameLancompiler '설명';
    선택적인 키워드신뢰슈퍼업자가없는 일반 데이터베이스 사용자 여부를 알려줍니다 특권은이 언어를 사용하여 만들 수 있어야합니다. 기능 및 트리거 절차. PL 기능이 실행되므로 데이터베이스 백엔드 내부에서신뢰할 수있는플래그는 언어에 대해서만 제공되어야합니다 데이터베이스 백엔드 내부 또는 파일 시스템. PL/PGSQL, PL/TCL 및 PL/PERL 언어는 알려져 있습니다 신뢰할 수 있습니다. 언어 pl/tclunot신뢰할 수있는 표시.

기본값Postgres설치, PL/PGSQL 언어의 핸들러가 구축되었습니다 그리고에 설치"도서관"디렉토리. TCL/TK 지원이 구성되면 처리기가 구성됩니다 PL/TCL 및 PL/TCLU도 동일하게 제작 및 설치됩니다. 위치. 마찬가지로 PL/PERL 핸들러가 제작 및 설치됩니다 Perl 지원이 구성된 경우 그만큼Createlang스크립트는 두 가지 생성을 자동화합니다 위에서 설명한 단계.

example

  1. 다음 명령은 데이터베이스에 어디에서 찾을 수 있는지 알려줍니다 PL/PGSQL 언어 호출의 공유 객체 핸들러 기능.

    함수 만들기 plpgsql_call_handler ()는 불투명을 반환합니다
        '/usr/local/pgsql/lib/plpgsql.so'language 'c';
  2. 명령

    신뢰할 수있는 절차 언어 만들기 'plpgsql'
        핸들러 plpgsql_call_handler
        Lancompiler 'pl/pgsql';
    그런 다음 이전에 선언 한 호출 핸들러를 정의합니다 함수 및 트리거 절차에 대해 함수를 호출해야합니다 언어 속성이 'plpgsql'인 곳.