포스트그레스지원합니다 절차적 언어의 정의 함수의 경우 또는 절차적 언어인 데이터베이스에 정의된 트리거 프로시저 함수를 해석하는 방법에 대한 기본 지식이 없습니다. 소스 텍스트. 대신 작업은 다음을 알고 있는 핸들러로 전달됩니다. 언어의 세부 사항. 핸들러 자체가 특별하다 공유 객체로 컴파일된 프로그래밍 언어 함수 요청 시 로드됩니다.
새로운 절차적 토토(PL)에 대한 핸들러 작성이 외부에 있습니다. 이 매뉴얼의 범위.
절차적 토토 설치
절차적 토토는 세 가지 방식으로 데이터베이스에 설치됩니다. 단계. (표준으로 제공되는 토토의 경우 배포, 쉘 스크립트createlang수행 대신 사용할 수 있습니다. 자세한 내용은 수동으로 확인하세요.)
언어 처리기를 위한 공유 객체는 다음과 같아야 합니다 컴파일하고 설치했습니다. 기본적으로 PL/pgSQL용 핸들러 데이터베이스 라이브러리 디렉토리에 구축되어 설치됩니다. Tcl/Tk 지원이 구성된 경우 PL/Tcl에 대한 처리기는 다음과 같습니다. 또한 동일한 위치에 구축 및 설치되었습니다.
핸들러는 다음 명령으로 선언되어야 합니다.
함수 생성handler_function_name()
OPAQUE를 다음과 같이 반환합니다.
'공유 객체 경로' 토토 'C';특수 반환 유형불투명이 함수가 수행하는 작업을 데이터베이스에 알립니다.
정의된 것 중 하나를 반환하지 않음SQL데이터 유형이며 다음에서 직접 사용할 수 없습니다.SQL문장.PL은 다음 명령으로 선언되어야 합니다.
[신뢰할 수 있는] 절차적 토토 ' 생성토토-이름'
핸들러handler_function_nameLANCOMPILER '설명';
선택적 키워드신뢰할 수 있음수퍼유저가 없는 일반 데이터베이스 사용자인지 여부를 알려줍니다.
이 토토를 사용하여 생성하려면 권한이 허용되어야 합니다.
기능 및 트리거 절차. PL 기능이 실행되기 때문에
데이터베이스 백엔드 내부에서,신뢰할 수 있음플래그는 언어에만 제공되어야 합니다.
데이터베이스 백엔드 내부 또는
파일 시스템. PL/pgSQL 및 PL/Tcl 언어는 다음과 같이 알려져 있습니다.
신뢰할 수 있습니다.예
다음 명령은 데이터베이스에 데이터를 찾을 위치를 알려줍니다. PL/pgSQL 언어의 호출 핸들러에 대한 공유 객체 기능.
CREATE FUNCTION plpgsql_call_handler ()는 OPAQUE AS를 반환합니다.
'/usr/local/pgsql/lib/plpgsql.so' LANGUAGE 'C';
명령
신뢰할 수 있는 절차적 언어 'plpgsql' 생성
핸들러 plpgsql_call_handler
LANCOMPILER 'PL/pgSQL';
그런 다음 이전에 선언된 호출 핸들러를 정의합니다. 함수 및 트리거에 대해 함수를 호출해야 합니다. 언어 속성이 'plpgsql'인 프로시저입니다.
PL 핸들러 함수에는 다음과 같은 특수 호출 인터페이스가 있습니다. 일반 C 언어 함수와 다릅니다. 중 하나 핸들러에 제공된 인수는의 객체 ID입니다.pg_proc테이블 항목 실행되어야 하는 함수. 핸들러가 검사합니다 함수 호출을 분석하기 위한 다양한 시스템 카탈로그 인수와 반환 데이터 유형입니다. 의 원본 텍스트 함수 본문은 prosrc 속성에서 찾을 수 있습니다.pg_proc. 이로 인해 PL 기능은 다음과 같습니다. SQL 언어 함수처럼 오버로드됩니다. 여러 개가있을 수 있습니다 동일한 함수 이름을 갖는 다른 PL 함수 호출 인수가 다르기 때문입니다.
에 정의된 절차적 토토템플릿1데이터베이스가 자동으로 정의됩니다. 이후에 생성된 모든 데이터베이스에서. 그래서 데이터베이스 관리자는 어떤 토토를 사용할 수 있는지 결정할 수 있습니다. 기본값.