[신뢰할 수 있는] 절차적 무지개 토토 ' 생성무지개 토토명'
핸들러call_handlerLANCOMPILER '코멘트'
신뢰할 수 있음다음을 지정합니다. 해당 언어에 대한 호출 처리기가 안전합니다. 즉, 그것은 제공합니다 권한이 없는 사용자는 액세스를 우회할 수 있는 기능이 없습니다. 제한. 등록 시 이 키워드를 생략한 경우 언어, 다음 사용자만포스트그레수퍼유저 권한을 사용할 수 있습니다 이 무지개 토토는 새로운 기능(예: 'C')을 생성합니다. 무지개 토토).
새로운 절차적 언어의 이름. 언어 이름은 대소문자를 구분하지 않습니다. 절차적 언어는 불가능하다. 내장 언어 중 하나를 재정의합니다.포스트그레스.
call_handler이름은 호출될 이전에 등록된 함수의 PL 절차를 실행합니다.
그LANCOMPILER인수는 에 삽입될 문자열랜컴파일러새 속성pg_무지개 토토항목. 현재,포스트그레스이 속성을 사용하지 않습니다 어떤 식으로든.
무지개 토토가 성공적으로 완료되면 이 메시지가 반환됩니다. 생성되었습니다.
이 오류는 다음과 같은 경우에 반환됩니다.기능 이름()을 찾을 수 없습니다.
사용 중무지개 토토 생성, 아포스트그레스사용자는 새로운 무지개 토토를 등록할 수 있습니다 와 함께포스트그레. 이어서, 함수와 트리거 프로시저를 이 새로운 도구에서 정의할 수 있습니다. 언어. 사용자는 다음을 가지고 있어야 합니다.포스트그레수퍼유저 등록 권한 새로운 무지개 토토.
절차적 무지개 토토에 대한 호출 핸들러를 작성해야 합니다. 'C'와 같은 컴파일러 무지개 토토로 등록되어 있습니다.포스트그레함수로 사용 인수가 없고를 반환합니다.불투명type, 지정되지 않거나 정의되지 않은 유형에 대한 자리 표시자.. 이 호출 처리기가 직접 호출되는 것을 방지합니다. 쿼리의 함수입니다.
그러나 인수는 다음과 같은 경우 실제 호출에 제공되어야 합니다. 제공되는 언어로 된 PL 기능 또는 트리거 절차 핸들러가 실행됩니다.
트리거 관리자에서 호출될 때 유일한 인수는 프로시저의 개체 ID입니다.pg_proc항목. 그 외 모든 정보는 트리거 관리자는 전역에서 찾을 수 있습니다.현재 트리거데이터포인터.
함수 관리자에서 호출되면 인수는 다음과 같습니다. 프로시저의 개체 IDpg_proc항목, 인수 개수 PL 함수에 주어지면 a의 인수Fmgr값구조 및 포인터 함수가 호출자에게 반환 여부를 알려주는 부울 값은 SQL NULL 값입니다.
다음을 가져오는 것은 호출 처리기에 달려 있습니다.pg_proc항목을 입력하고 인수를 분석하고 호출된 프로시저의 반환 유형입니다. 의 AS 절함수 생성절차는 다음과 같습니다. 에서 찾았습니다.prosrc속성pg_proc테이블 항목. 이는 다음과 같을 수 있습니다. 절차적 언어 자체의 소스 텍스트(예: PL/Tcl), 파일에 대한 경로 이름 또는 자세한 내용은 핸들러를 호출하세요.
사용함수 생성만들기 위해 기능.
사용무지개 토토 삭제절차를 삭제하려면 무지개 토토.
표 참조pg_무지개 토토용 추가 정보:
테이블 "pg_무지개 토토" 속성 | 유형 | 수정자 -------------+---------+---------- 란이름 | 이름 | 라니플 | 부울 | 신뢰할 수 있는 lanpl | 부울 | 랜플콜포이드 | 이드 | 란컴파일러 | 텍스트 | 란이름 | 라니플 | 신뢰할 수 있는 lanpl | 랜플콜포이드 | 란컴파일러 ----------+---------+------------+---------------+------------- 내부 | 에프 | 에프 | 0 | 해당사항 없음 다 | 에프 | 에프 | 0 | /bin/cc SQL | 에프 | 에프 | 0 | 포스트그레스
절차적 언어에 대한 호출 핸들러는 다음과 같아야 하므로 에 등록됨포스트그레스에 'C' 무지개 토토는 모든 기능과 'C' 기능의 제한 사항.
현재 절차적 언어에 대한 정의는 다음과 같습니다. 생성된 후에는 변경될 수 있습니다.
이것은 'C'로 작성된 PL 핸들러의 템플릿입니다:
#include "executor/spi.h"
#include "명령/trigger.h"
#include "utils/elog.h"
#include "fmgr.h" /* FmgrValues 구조체의 경우 */
#include "access/heapam.h"
#include "utils/syscache.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"
데이텀
plsample_call_handler(
오이드 프로이드,
int 발음,
FmgrValues *proargs,
부울 *isNull)
데이텀 복구;
TriggerData *트리거데이터;
if (CurrentTriggerData == NULL)
/*
* 함수로 호출됨
*/
회수 = ...
그렇지 않으면
/*
* 트리거 프로시저로 호출됨
*/
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
회수 = ...
*isNull = 거짓;
반환 회수;
대신 몇 천 줄의 코드만 추가하면 됩니다. PL 호출 핸들러를 완료하려면 점을 클릭하세요. 보다함수 생성컴파일 방법에 대한 정보 로드 가능한 모듈로 변환합니다.
다음 명령은 샘플 절차를 등록합니다 언어:
함수 생성 plsample_call_handler () 불투명 반환
AS '/usr/local/pgsql/lib/plsample.so'
언어 'C';
절차적 언어 'plsample' 생성
핸들러 plsample_call_handler
LANCOMPILER 'PL/샘플';
무지개 토토 생성은포스트그레확장. 없습니다무지개 토토 생성문의 내용SQL92.