PostgreSQL허용합니다 사용자 정의 함수는 다른 토토 베이로도 작성 가능 SQL 및 C. 이러한 다른 토토 베이는 일반적으로 호출됩니다.절차적 토토 베이 (PLs). 절차적으로 작성된 함수의 경우 언어에 따라 데이터베이스 서버에는 기본적으로 어떻게 작동하는지에 대한 지식이 없습니다. 함수의 소스 텍스트를 해석합니다. 대신 과제는 세부 사항을 알고 있는 특수 핸들러에 전달됩니다. 언어. 핸들러는 모든 구문 분석 작업을 수행할 수 있습니다. 구문 분석, 실행 등을 자체적으로 수행하거나 다음과 같은 역할을 할 수 있습니다."접착제"사이포스트그레SQL및 기존 구현 프로그래밍 토토 베이. 핸들러 자체는 C 토토 베이입니다. 함수는 공유 객체로 컴파일되고 요청 시 로드됩니다. 다른 C 함수와 마찬가지로.
현재 4가지 절차적 토토 베이를 사용할 수 있습니다. 표준포스트그레SQL배포:PL/pgSQL (제35장), PL/Tcl (PostgreSQL : 문서 : 8.0 : PL/무지개 토토 -무지개 토토 절차 언어), PL/펄 (제37장) 및PL/파이썬 (PostgreSQL : 문서 : 8.0 : 무지개 토토/Python -Python Prossural Language). 다른 언어는 사용자가 정의할 수 있습니다. 기본 새로운 절차적 토토 베이를 개발하는 방법은 다음에서 다룹니다.45장.
사용 가능한 추가 절차적 토토 베이가 있습니다. 핵심 배포판에는 포함되지 않습니다.부록 H다음에 대한 정보가 있습니다. 찾아요.
절차적 토토 베이는 다음과 같아야 합니다."설치됨"각 데이터베이스에 사용. 그러나 데이터베이스에 설치된 절차적 토토 베이템플릿1자동으로 사용 가능 이후에 생성된 모든 데이터베이스에서 해당 항목 이후템플릿1다음에 의해 복사됩니다데이터베이스 생성. 그래서 데이터베이스 관리자는 어떤 데이터베이스에서 어떤 토토 베이를 사용할 수 있는지 결정할 수 있으며 원하는 경우 기본적으로 일부 토토 베이를 사용할 수 있도록 설정할 수 있습니다.
표준 배포판과 함께 제공되는 토토 베이의 경우, 프로그램토토 커뮤니티 : 문서설치하는 데 사용될 수 있습니다. 세부 사항을 손으로 처리하는 대신 토토 베이로 작업합니다. 에 대한 예를 들어 토토 베이를 설치하려면PL/pgSQL데이터베이스에템플릿1, 사용
createlang plpgsql template1
아래에 설명된 수동 절차는 다음 경우에만 권장됩니다. 사용자 정의 언어 설치createlang모릅니다.
수동 절차적 토토 베이 설치
절차적 토토 베이는 4개의 데이터베이스에 설치됩니다. 이 단계는 데이터베이스 수퍼유저가 수행해야 합니다. 그만큼createlang프로그램은 다음을 제외한 모든 것을 자동화합니다.1단계.
언어 처리기를 위한 공유 객체는 다음과 같아야 합니다 적절한 라이브러리에 컴파일 및 설치 디렉토리. 이것은 건물과 같은 방식으로 작동합니다. 일반 사용자 정의 C 함수로 모듈 설치 그렇습니다; 참조섹션 31.9.6. 종종 언어 처리기는 실제 프로그래밍을 제공하는 외부 라이브러리 언어 엔진; 그렇다면 다음과 같이 설치해야 합니다. 음.
핸들러는 다음 명령으로 선언되어야 합니다.
함수 생성handler_function_name()
반환 토토 베이_처리자
그대로 '공유 객체 경로'
토토 베이 C;
특수 반환 유형토토 베이_핸들러데이터베이스 시스템에 알려줍니다. 이 함수는 정의된 것 중 하나를 반환하지 않습니다.SQL데이터 유형 및 에서 직접 사용할 수 없음SQL문장.
선택적으로 언어 처리기는 다음을 제공할 수 있습니다."검증기"함수 없이 함수 정의의 정확성을 확인합니다. 실제로 실행합니다. 유효성 검사기 함수가 호출됩니다. 으로함수 생성존재하는 경우. 핸들러가 유효성 검사기 기능을 제공하는 경우 다음과 같은 명령으로 선언하세요.
함수 생성validator_function_name(oid)
반품 무효
그대로 '공유 객체 경로'
토토 베이 C;
PL은 다음 명령으로 선언되어야 합니다.
생성 [신뢰할 수 있음] [절차] 토토 베이토토 베이-이름핸들러handler_function_name [검증기validator_function_name] ;
선택적 키워드신뢰할 수 있음이 없는 일반 데이터베이스 사용자를 지정합니다. 이것을 사용하려면 슈퍼유저 권한이 허용되어야 합니다. 함수를 생성하고 프로시저를 실행하는 언어입니다. PL 기능은 데이터베이스 내부에서 실행되므로 서버,신뢰할 수 있음플래그는 다음과 같습니다. 접근을 허용하지 않는 언어에만 부여됩니다. 데이터베이스 서버 내부 또는 파일 시스템. 는 언어PL/pgSQL, PL/Tcl및PL/펄신뢰할 수 있는 것으로 간주됩니다. 는 토토 베이PL/TclU, PL/PerlU및PL/PythonU설계되었습니다 무제한의 기능을 제공해야 하며,아님표시됨 신뢰할 수 있습니다.
예 34-1수동 설치 절차의 작동 방식을 보여줍니다. 언어로PL/pgSQL.
예 34-1. 수동 설치PL/pgSQL
다음 명령은 데이터베이스 서버에 에 대한 공유 객체를 찾으세요.PL/pgSQL언어의 호출 핸들러 기능.
함수 생성 plpgsql_call_handler() 언어 핸들러 AS를 반환합니다.
'$libdir/plpgsql' 언어 C;
PL/pgSQL검증기가 있습니다 함수이므로 우리도 이를 선언합니다.
CREATE FUNCTION plpgsql_validator(oid) void AS 반환
'$libdir/plpgsql' 토토 베이 C;
명령
신뢰할 수 있는 절차적 토토 베이 생성 plpgsql
핸들러 plpgsql_call_handler
유효성 검사기 plpgsql_validator;
그런 다음 이전에 선언된 함수가 다음과 같이 정의됩니다. 함수 및 트리거 프로시저에 대해 호출됩니다. 언어 속성은plpgsql.
기본적으로포스트그레SQL설치, 핸들러PL/pgSQL토토 베이가 빌드되고 설치되었습니다. 안으로"도서관"디렉토리. 만일Tcl지원이 구성되었습니다. 처리기PL/Tcl그리고PL/TclU또한 구축되었으며 같은 위치에 설치했습니다. 마찬가지로,PL/펄및PL/PerlU핸들러가 빌드 및 설치되었습니다. Perl 지원이 구성된 경우 및PL/PythonUPython 지원 시 설치됨 구성되었습니다.