이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 와이즈 토토 생성버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

토토 결과 생성

CREATE LANGUAGE — 새로운 절차적 토토 결과 정의

시놉시스

생성 [ 또는 교체 ] [ 절차 ] 토토 결과이름생성 [ 또는 교체 ] [ 신뢰할 수 있음 ] [ 절차 ] 토토 결과이름핸들러call_handler[ 인라인inline_handler] [ 유효성 검사기발함수 ]

설명

토토 결과 생성다음을 사용하여 새로운 절차적 언어를 등록합니다.포스트그레SQL데이터베이스. 이후에 이 새로운 토토 결과로 함수와 프로시저를 정의할 수 있습니다.

참고

현재포스트그레SQL9.1, 대부분의 절차적 언어는 다음과 같이 만들어졌습니다.확장, 따라서 다음과 함께 설치되어야 합니다.확장 프로그램 만들기아님토토 결과 생성. 직접 사용토토 결과 생성이제 확장 설치 스크립트로 제한되어야 합니다. 만약 당신이맨손으로데이터베이스의 언어, 아마도 업그레이드의 결과로 다음을 사용하여 확장 프로그램으로 변환할 수 있습니다.확장 프로그램 생성토토 결과명포장되지 않은 상태에서.

토토 결과 생성언어 이름을 해당 언어로 작성된 함수 실행을 담당하는 처리기 함수와 효과적으로 연결합니다. 참조PostgreSQL : 문서 : 11 : 56 장. 절차 적 언어 젠 토토 작성토토 결과 처리기에 대한 자세한 내용을 확인하세요.

두 가지 형태가 있습니다.토토 결과 생성명령. 첫 번째 형식에서 사용자는 원하는 언어의 이름만 제공하고포스트그레SQL서버가 다음을 참조합니다pg_pltemplate시스템 카탈로그를 사용하여 올바른 매개변수를 결정합니다. 두 번째 형식에서는 사용자가 언어 이름과 함께 언어 매개변수를 제공합니다. 두 번째 형식은 정의되지 않은 언어를 만드는 데 사용할 수 있습니다.pg_pltemplate, 하지만 이 접근 방식은 더 이상 사용되지 않는 것으로 간주됩니다.

서버가 다음에서 항목을 찾을 때pg_pltemplate13724_13980

일반적으로 사용자는 다음을 가지고 있어야 합니다.포스트그레SQL수퍼유저 권한으로 새 언어를 등록할 수 있습니다. 그러나 언어가 다음 목록에 나열되어 있는 경우 데이터베이스 소유자는 해당 데이터베이스 내에 새 언어를 등록할 수 있습니다.pg_pltemplate카탈로그이며 데이터베이스 소유자가 생성하도록 허용된 것으로 표시되어 있습니다(tmpldbacreate사실입니다). 기본값은 데이터베이스 소유자가 신뢰할 수 있는 토토 결과를 생성할 수 있다는 것입니다. 그러나 이는 슈퍼유저가 내용을 수정하여 조정할 수 있습니다.pg_pltemplate. 언어 작성자는 소유자가 되며 나중에 해당 언어를 삭제하거나 이름을 바꾸거나 새 소유자에게 할당할 수 있습니다.

토토 결과 생성 또는 교체새 언어를 만들거나 기존 정의를 대체합니다. 언어가 이미 존재하는 경우 해당 매개변수는 지정되거나 다음에서 가져온 값에 따라 업데이트됩니다.pg_pltemplate, 그러나 언어의 소유권 및 권한 설정은 변경되지 않으며 해당 언어로 작성된 기존 기능은 여전히 유효한 것으로 간주됩니다. 토토 결과 생성을 위한 일반적인 권한 요구 사항 외에도 사용자는 기존 언어의 수퍼유저 또는 소유자여야 합니다.교체case는 주로 언어가 존재하는지 확인하는 데 사용됩니다. 언어에 다음이 있는 경우pg_pltemplate다음 항목교체실제로는 기존 정의에 대해 아무것도 변경하지 않습니다. 단, 다음과 같은 특이한 경우를 제외하고는pg_pltemplate토토 결과가 생성된 이후 항목이 수정되었습니다.

매개변수

신뢰할 수 있음

신뢰할 수 있음토토 결과는 사용자가 다른 방법으로는 가질 수 없는 데이터에 대한 액세스 권한을 부여하지 않도록 지정합니다. 토토 결과 등록 시 이 키워드를 생략하면 해당 키워드를 가진 사용자만 해당포스트그레SQL수퍼유저 권한은 이 토토 결과를 사용하여 새로운 기능을 생성할 수 있습니다.

절차

이것은 시끄러운 단어입니다.

이름

새로운 절차적 언어의 이름. 이름은 데이터베이스의 언어 중에서 고유해야 합니다.

이전 버전과의 호환성을 위해 이름을 작은따옴표로 묶을 수 있습니다.

핸들러 call_handler

call_handler은 절차적 언어의 함수를 실행하기 위해 호출될 이전에 등록된 함수의 이름입니다. 절차적 언어에 대한 호출 핸들러는 버전 1 호출 규칙을 사용하여 C와 같은 컴파일된 언어로 작성되고 다음으로 등록되어야 합니다.PostgreSQL인수를 사용하지 않고 다음을 반환하는 함수로토토 결과_처리자type, 단순히 함수를 호출 핸들러로 식별하는 데 사용되는 자리 표시자 유형입니다.

인라인 inline_handler

inline_handler은 익명 코드 블록을 실행하기 위해 호출될 이전에 등록된 함수의 이름입니다(DO명령)을 이 토토 결과로 사용합니다. 그렇지 않은 경우inline_handler함수를 지정하면 언어가 익명 코드 블록을 지원하지 않습니다. 핸들러 함수는 다음 유형의 인수 하나를 사용해야 합니다.내부, 이는DO명령의 내부 표현이며 일반적으로 반환됩니다공허. 핸들러의 반환 값은 무시됩니다.

검증기 발함수

발함수은 언어의 새 함수가 생성될 때 새 함수의 유효성을 검사하기 위해 호출될 이전에 등록된 함수의 이름입니다. 유효성 검사기 함수가 지정되지 않으면 새 함수가 생성될 때 확인되지 않습니다. 유효성 검사기 함수는 다음 유형의 인수 하나를 사용해야 합니다.oid은 생성될 함수의 OID가 되며 일반적으로 다음을 반환합니다.무효.

유효성 검사기 함수는 일반적으로 구문의 정확성을 위해 함수 본문을 검사하지만, 예를 들어 토토 결과가 특정 인수 유형을 처리할 수 없는 경우 함수의 다른 속성도 볼 수 있습니다. 오류를 알리기 위해 유효성 검사기 함수는ereport()함수. 함수의 반환 값은 무시됩니다.

신뢰할 수 있음서버에 지정된 언어 이름에 대한 항목이 있는 경우 옵션 및 지원 기능 이름은 무시됩니다.pg_pltemplate.

참고

사용토토 결과 삭제절차적 언어를 삭제합니다.

시스템 카탈로그pg_토토 결과(참조스포츠 토토 사이트 PostgreSQL : 문서 : 11 : 52.29. pg_language)는 현재 설치된 언어에 대한 정보를 기록합니다. 또한,psql명령\dL설치된 토토 결과를 나열합니다.

절차적 언어로 함수를 생성하려면 사용자는 다음을 가지고 있어야 합니다.사용토토 결과에 대한 권한입니다. 기본적으로,사용다음에게 부여됨공개(즉, 모든 사람) 신뢰할 수 있는 토토 결과용. 원하시면 취소될 수 있습니다.

절차적 언어는 개별 데이터베이스에 대해 로컬입니다. 그러나 언어는에 설치할 수 있습니다.템플릿1데이터베이스, 이후에 생성되는 모든 데이터베이스에서 자동으로 사용할 수 있게 됩니다.

호출 핸들러 함수, 인라인 핸들러 함수(있는 경우) 및 유효성 검사기 함수(있는 경우)는 서버에 해당 언어에 대한 항목이 없는 경우 이미 존재해야 합니다.pg_pltemplate. 그러나 항목이 있는 경우 해당 기능이 이미 존재할 필요는 없습니다. 데이터베이스에 없으면 자동으로 정의됩니다. (이로 인해 다음과 같은 결과가 발생할 수 있습니다.토토 결과 생성실패, 해당 언어를 구현하는 공유 라이브러리를 설치에서 사용할 수 없는 경우.)

포스트그레SQL7.3 이전 버전에서는 자리 표시자 유형을 반환하는 핸들러 함수를 선언해야 했습니다.불투명, 대신언어_핸들러. 이전 덤프 파일 로드를 지원하려면,토토 결과 생성반환으로 선언된 함수를 허용합니다불투명, 그러나 알림을 발행하고 함수의 선언된 반환 유형을 다음으로 변경합니다.토토 결과_처리자.

표준 절차적 언어를 생성하는 데 선호되는 방법은 다음과 같습니다.

토토 결과 생성 plperl;

에 알려지지 않은 토토 결과의 경우pg_pltemplate카탈로그, 다음과 같은 순서가 필요합니다:

함수 생성 plsample_call_handler() 반환 Language_handler
    AS '$libdir/plsample'
    언어 C;
언어 만들기 plsample
    핸들러 plsample_call_handler;

호환성

토토 결과 생성PostgreSQL확장.