사용 중언어 토토 커뮤니티, 아PostgreSQL사용자는 새로운 것을 등록할 수 있습니다 a를 사용하는 절차적 언어포스트그레SQL데이터베이스. 이어서 기능 이 새로운 언어로 트리거 프로시저를 정의할 수 있습니다.
언어 토토 커뮤니티효과적으로 언어 이름을 호출 처리기와 연결합니다. 언어로 작성된 기능을 실행하는 일을 담당합니다. 참조토토 캔 : 문서 : 8.3 : 절차 언어더 보기 언어 호출 처리기에 대한 정보입니다.
다음의 두 가지 형태가 있습니다.만들기 언어명령. 첫 번째 형식에서는 사용자가 다음을 제공합니다. 원하는 언어의 이름 및포스트그레SQL서버가 다음을 참조합니다pg_pltemplate결정할 시스템 카탈로그 올바른 매개변수. 두 번째 형식에서는 사용자가 언어 이름과 함께 언어 매개변수. 두 번째 형태 정의되지 않은 언어를 만드는 데 사용할 수 있습니다.pg_pltemplate, 하지만 이 접근 방식은 쓸모없는 것으로 간주됩니다.
서버가 항목을 찾을 때pg_pltemplate주어진 언어에 대한 카탈로그 이름에 포함되어 있어도 카탈로그 데이터를 사용합니다. 언어 매개변수. 이 동작은 이전 덤프의 로드를 단순화합니다. 최신 정보가 포함되어 있을 가능성이 있는 파일 언어 지원 기능.
일반적으로 사용자는 다음을 가지고 있어야 합니다.PostgreSQL수퍼유저 등록 권한 새로운 언어. 그러나 데이터베이스 소유자는 새로운 데이터베이스를 등록할 수 있습니다. 해당 데이터베이스 내의 언어(언어가에 나열되어 있는 경우)pg_pltemplate카탈로그 및 표시됨 데이터베이스 소유자가 토토 커뮤니티하도록 허용한 대로(tmpldbacreate사실입니다). 기본값은 신뢰할 수 있는 언어는 데이터베이스 소유자가 만들 수 있지만 이는 내용을 수정하여 수퍼유저가 조정할 수 있습니다.pg_pltemplate. 언어의 창시자 소유자가 되며 나중에 삭제하거나 이름을 바꾸거나 할당할 수 있습니다. 새 소유자에게.
신뢰할 수 있음호출을 지정합니다. 해당 언어에 대한 처리기는 안전합니다. 즉, 안전하지 않습니다. 권한이 없는 사용자에게 우회할 수 있는 기능을 제공합니다. 접근 제한. 이 키워드가 생략된 경우 언어를 등록하면, 해당 사용자만PostgreSQL슈퍼유저 권한을 사용할 수 있습니다 새로운 기능을 토토 커뮤니티하기 위한 언어입니다.
이것은 시끄러운 단어입니다.
새로운 절차적 언어의 이름. 언어 이름은 대소문자를 구분하지 않습니다. 이름은 다음 중 고유해야 합니다. 데이터베이스의 언어입니다.
이전 버전과의 호환성을 위해 이름을 다음으로 묶을 수 있습니다. 작은따옴표.
call_handler이름은 호출될 이전에 등록된 함수의 절차적 언어 기능을 실행합니다. 통화 처리기 절차적 언어는 컴파일된 언어로 작성되어야 합니다. 버전 1 호출 규칙을 사용하는 C와 같은 언어 및 에 등록됨PostgreSQL인수를 사용하지 않고 다음을 반환하는 함수로언어_핸들러유형, 자리표시자 단순히 함수를 호출로 식별하는 데 사용되는 유형 핸들러.
발함수이름은 호출될 이전에 등록된 함수 언어의 새로운 함수가 생성될 때 유효성을 검사하기 위해 새로운 기능. 유효성 검사기 함수가 지정되지 않은 경우 그러면 새 함수가 생성될 때 확인되지 않습니다. 유효성 검사기 함수는 다음 유형의 인수 하나를 사용해야 합니다.oid은 OID가 됩니다. 생성될 함수이며 일반적으로 다음을 반환합니다.공허.
유효성 검사기 기능은 일반적으로
구문의 정확성을 위해 함수 본문을 사용하지만
함수의 다른 속성을 살펴보세요. 예를 들어 다음과 같습니다.
언어는 특정 인수 유형을 처리할 수 없습니다. 받는 사람
오류 신호를 보내면 유효성 검사기 함수는ereport()함수. 는
함수의 반환 값은 무시됩니다.
그신뢰할 수 있음옵션 및 지원 서버에 다음 항목에 대한 항목이 있는 경우 함수 이름은 무시됩니다. 에 지정된 언어 이름pg_pltemplate.
그PostgreSQL프로그램은 간단한 래퍼입니다. 주위에언어 토토 커뮤니티명령. 그것 쉘 명령으로 절차적 언어를 쉽게 설치할 수 있습니다. 라인.
사용PostgreSQL : 문서 : 8.3 : 범퍼카 토토 드롭또는 더 나은 방법은droplang프로그램, 절차적 언어를 삭제합니다.
시스템 카탈로그pg_언어(참조토토 : 문서 : 8.3 : PG_LANGUAGE)
현재 설치된 언어에 대한 정보를 기록합니다.
또한,createlang목록 옵션이 있습니다
설치된 언어입니다.
절차적 언어로 함수를 생성하려면 사용자는 다음을 충족해야 합니다.사용언어에 대한 권한입니다. 작성자: 기본값,사용다음에게 부여됨공개(즉, 모든 사람)은 신뢰할 수 있는 언어입니다. 원하시면 취소될 수 있습니다.
절차적 언어는 개별 데이터베이스에 대해 로컬입니다. 그러나 언어는에 설치할 수 있습니다.템플릿1데이터베이스로 인해 이후에 생성되는 모든 항목에서 자동으로 사용 가능 데이터베이스.
호출 핸들러 함수 및 유효성 검사기 함수(있는 경우) 서버에 항목이 없으면 이미 존재해야 합니다. 언어pg_pltemplate. 하지만 언제 항목이 있지만 기능이 이미 존재할 필요는 없습니다. 그들 데이터베이스에 없으면 자동으로 정의됩니다. (이로 인해 다음과 같은 결과가 발생할 수 있습니다.언어 토토 커뮤니티실패, 해당 언어를 구현하는 공유 라이브러리가 설치에서는 사용할 수 없습니다.)
에PostgreSQL이전 버전 7.3에서는 핸들러 함수를 반환으로 선언해야 했습니다. 자리표시자 유형불투명, 대신언어_핸들러. 오래된 로딩을 지원하기 위해 덤프 파일,언어 토토 커뮤니티수락하겠습니다 반환으로 선언된 함수불투명, 하지만 알림을 발행하고 함수의 선언된 내용을 변경합니다. 반환 유형은 다음과 같습니다.언어_처리자.
표준 절차를 생성하는 데 선호되는 방법 언어는 다음과 같습니다:
언어 토토 커뮤니티 plpgsql;
에 알려지지 않은 언어의 경우pg_pltemplate카탈로그, 이와 같은 시퀀스 필요합니다:
함수 토토 커뮤니티 plsample_call_handler() 반환 Language_handler
AS '$libdir/plsample'
언어 C;
언어 만들기 plsample
핸들러 plsample_call_handler;