Postgres절차 토토의 정의. 함수의 경우 또는 트리거 절차는 절차 토토, 데이터베이스로 정의됩니다 기능을 해석하는 방법에 대한 내장 지식이 없습니다. 소스 텍스트. 대신, 작업은 알고있는 핸들러에게 전달됩니다. 토토의 세부 사항. 핸들러 자체는 특별합니다 토토 기능 프로그래밍 토토 기능 공유 객체로 컴파일됩니다 주문에 적재.
새로운 절차 토토 (PL)에 대한 핸들러 작성은 외부에 있습니다. 이 매뉴얼의 범위.
절차 토토 설치
절차 토토가 데이터베이스에 3 개로 설치됩니다. 단계. (표준과 함께 제공된 토토 배포, 쉘 스크립트Createlang수행하는 대신 사용할 수 있습니다 수동으로 세부 사항.)
토토 핸들러의 공유 객체는이어야합니다 컴파일 및 설치. 기본적으로 pl/pgsql의 핸들러 데이터베이스 라이브러리 디렉토리에 구축 및 설치됩니다. TCL/TK 지원이 구성되면 PL/TCL의 핸들러는 같은 위치에도 제작 및 설치되었습니다.
핸들러는 명령으로 선언해야합니다
기능 생성handler_function_name() 불투명하게 반환합니다 '경로 대 공유-개체' 토토 'C';특수 반환 유형opaque이 기능이 데이터베이스에 알려줍니다 정의 된 것 중 하나를 반환하지 않음SQL데이터 타입으로 직접 사용할 수 없습니다SQL진술.
PL은 명령으로 선언해야합니다
[신뢰할 수있는] 절차 토토 만들기토토 이름' 매니저handler_function_nameLancompiler '설명';선택적 키워드신뢰할 수있는슈퍼업자가없는 일반 데이터베이스 사용자 여부를 알려줍니다 특권은이 토토를 사용하여 만들 수 있어야합니다. 기능 및 트리거 절차. PL 기능이 실행되므로 데이터베이스 백엔드 내부에서신뢰할 수있는플래그는 언어에 대해서만 제공되어야합니다 데이터베이스 백엔드 내부 또는 파일 시스템. 언어 PL/PGSQL 및 PL/TCL은 알려져 있습니다 신뢰할 수 있습니다.
example
다음 명령은 데이터베이스에 어디에서 찾을 수 있는지 알려줍니다. PL/PGSQL 언어의 통화 핸들러의 공유 객체 기능.
함수 만들기 plpgsql_call_handler ()는 불투명 한 것을 반환합니다 '/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 기능이 같은 함수 이름을 갖는 기능 호출 인수가 다르므로
절차 토토에 정의 된template1데이터베이스가 자동으로 정의됩니다 이후에 생성 된 모든 데이터베이스에서. 그래서 데이터베이스 관리자는 어떤 토토를 사용할 수 있는지 결정할 수 있습니다 기본.