사용 중언어 생성, a포스트그레SQL사용자는 새로운 것을 등록할 수 있습니다 a를 사용하는 절차적 언어포스트그레SQL데이터베이스. 이어서 기능 이 새로운 언어로 트리거 프로시저를 정의할 수 있습니다. 는 사용자는 다음을 가지고 있어야 합니다.포스트그레SQL새로운 언어를 등록할 수 있는 슈퍼유저 권한입니다.
언어 생성효과적으로 언어 이름을 호출 처리기와 연결합니다. 언어로 작성된 기능을 실행하는 일을 담당합니다. 참조프로그래머 가이드더 보기 언어 호출 처리기에 대한 정보입니다.
절차적 언어는 개인마다 로컬이라는 점에 유의하세요. 데이터베이스. 모든 데이터베이스에서 언어를 사용할 수 있도록 하려면 다음을 수행하십시오. 기본값은 다음 위치에 설치되어야 합니다.템플릿1데이터베이스.
신뢰할 수 있음호출을 지정합니다 해당 언어에 대한 처리기는 안전합니다. 즉, 안전하지 않습니다. 권한이 없는 사용자에게 우회할 수 있는 기능을 제공합니다. 접근 제한. 이 키워드가 생략된 경우 언어를 등록하면, 해당 사용자만포스트그레SQL수퍼유저 권한을 사용할 수 있습니다 새로운 기능을 생성하기 위한 언어입니다.
이것은 시끄러운 단어입니다.
새로운 절차적 언어의 이름. 언어 이름은 대소문자를 구분하지 않습니다. 절차적 언어는 불가능하다. 내장 언어 중 하나를 재정의합니다.포스트그레SQL.
이전 버전과의 호환성을 위해 이름을 다음으로 묶을 수 있습니다. 작은따옴표.
call_handler이름은 호출될 이전에 등록된 함수의 절차적 언어 기능을 실행합니다. 통화 처리기 절차적 언어는 컴파일된 언어로 작성되어야 합니다. 버전 1 호출 규칙을 사용하는 C와 같은 언어 및 에 등록됨젠 토토인수를 사용하지 않고 다음을 반환하는 함수로언어_처리자유형, 자리 표시자 단순히 함수를 호출로 식별하는 데 사용되는 유형 핸들러.
발함수이름은 호출될 이전에 등록된 함수 언어의 새로운 함수가 생성될 때 유효성을 검사하기 위해 새로운 기능. 유효성 검사기 함수가 지정되지 않은 경우 그러면 새 함수가 생성될 때 확인되지 않습니다. 유효성 검사기 함수는 다음 유형의 인수 하나를 사용해야 합니다.oid는 OID가 됩니다. 생성될 함수이며 일반적으로 다음을 반환합니다.무효.
검증기 기능은 일반적으로
구문의 정확성을 위해 함수 본문을 사용하지만
함수의 다른 속성을 살펴보세요. 예를 들어 다음과 같습니다.
언어는 특정 인수 유형을 처리할 수 없습니다. 받는 사람
오류 신호를 보내면 유효성 검사기 함수는elog()함수. 반환
함수의 값은 무시됩니다.
이 명령은 일반적으로 다음에서 직접 실행해서는 안 됩니다. 사용자. 다음에서 제공되는 절차적 언어의 경우젠 토토배포,createlang스크립트를 사용해야 합니다. 또한 올바른 호출 처리기를 설치합니다. (createlang전화할 것이다만들기 언어내부적으로.)
에젠 토토이전 버전 7.3에서는 핸들러 함수를 반환으로 선언해야 했습니다. 자리표시자 유형불투명, 대신언어_핸들러. 오래된 로딩을 지원하기 위해 덤프 파일,언어 생성수락하겠습니다 반환으로 선언된 함수불투명, 하지만 NOTICE를 발행하고 함수의 선언된 내용을 변경합니다. 반환 유형은 다음과 같습니다.언어_처리자.
다음을 사용하세요PostgreSQL : 문서 : 7.3 : 토토 핫 만들기새 함수를 생성하는 명령입니다.
사용무지개 토토 : 문서 : 7.3 : 언어 드롭또는 더 나은 방법은droplang스크립트, 절차적 언어를 삭제합니다.
시스템 카탈로그pg_언어현재 설치된 절차에 대한 정보를 기록합니다.
언어.
테이블 "pg_언어" 속성 | 유형 | 수정자 -------------+------------+---------- 란이름 | 이름 | 라니플 | 부울 | 신뢰할 수 있는 lanpl | 부울 | 랜플콜포이드 | 이드 | 랜검증기 | 이드 | 라나클 | 항목[] | 란이름 | 라니플 | 신뢰할 수 있는 lanpl | 랜플콜포이드 | 랜검증기 | 라나클 -------------+---------+------------+------------+------------+---------------+--------- 내부 | 에프 | 에프 | 0 | 2246 | c | 에프 | 에프 | 0 | 2247 | SQL | 에프 | 티 | 0 | 2248 | =U
현재 권한을 제외하고는 절차적 언어의 정의는 일단 정의되면 변경할 수 없습니다. 생성되었습니다.
절차적 언어를 사용하려면 사용자는 다음과 같아야 합니다. 부여됨사용특권.createlang프로그램이 자동으로 부여합니다. 언어가 알려진 경우 모든 사람에게 권한을 부여합니다. 신뢰할 수 있습니다.