이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL: Tài liệu: 17: Tạo 토토 결과ôn 토토 결과ữ버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

무지개 토토 생성

이름

무지개 토토 생성 - 새로운 언어를 정의합니다 기능
[신뢰할 수있는] 절차 무지개 토토 만들기langname'
    매니저call_handlerLancompiler '댓글'

입력

신뢰할 수있는

신뢰무지개 토토에 대한 전화 처리기는 안전합니다. 즉, 제공합니다 액세스를 우회 할 수있는 기능이없는 사용자가 없습니다 제한. 등록 할 때이 키워드가 생략 된 경우 무지개 토토, 사용자 만PostgresSuperuser 권한이 사용할 수 있습니다 이 언어는 새로운 기능을 만들기위한 ( 'C'와 같은 언어).

​​langname

새로운 절차 언어의 이름. 언어 이름은 사례 둔감합니다. 절차 적 언어는 할 수 없습니다 내장 된 언어 중 하나를 무시하십시오Postgres.

핸들러call_handler

call_handler이름입니다 호출 될 이전에 등록 된 기능 중 PL 절차 실행.

댓글

theLancompiler인수입니다 에 삽입 될 문자열Lancompiler새로운 속성PG_LANGUAGE입력. 현재,Postgres이 속성을 사용하지 않습니다 어떤 식 으로든.

출력

생성

언어가 성공적으로 있으면이 메시지가 반환됩니다 생성.

오류 : PL 핸들러 기능funcName()는 그렇지 않습니다 존재하다

이 오류는 함수이면 반환됩니다funcName()는 찾을 수 없습니다.

설명

사용무지개 토토 생성, aPostgres사용자는 새 언어를 등록 할 수 있습니다 와 함께Postgres. 그후, 이 새로운 경우 기능 및 트리거 절차를 정의 할 수 있습니다. 언어. 사용자는가 있어야합니다.Postgres등록하기위한 슈퍼 서서 권한 a 새로운 무지개 토토.

PL 핸들러 작성

절차 언어에 대한 호출 핸들러를 작성해야합니다. 'C'와 같은 컴파일러 언어로Postgres함수로 논쟁이없고 반환opaque불특정 또는 정의되지 않은 유형의 자리 표시자인 타입 호출 핸들러가 직접 호출되는 것을 방지합니다. 쿼리에서 기능.

그러나 실제 전화에 인수를 제공해야합니다. 제공되는 언어로 된 PL 기능 또는 트리거 절차 핸들러는 실행됩니다.

  • 트리거 관리자에서 호출했을 때 유일한 인수 프로 시저의 객체 IDPG_PROC입력. 다른 모든 정보 트리거 관리자는 글로벌에서 발견됩니다CurrentTriggerData포인터.

  • 함수 관리자에서 호출하면 인수가 있습니다 프로 시저의 객체 IDPG_PROC입력, 인수 수 PL 기능에 주어진 A의 인수.fmgrvalues구조 및 포인터에 대한 포인터 부울이 함수가 발신자에게 반환되는지 알려주는 곳 값은 SQL NULL 값입니다.

콜 핸들러에 달려 있습니다.PG_PROC입력 및 인수를 분석합니다 호출 된 절차의 반환 유형. 의 AS 절함수 만들기10155_10200prosrc속성PG_PROC테이블 입력. 이것은 일 수 있습니다 절차 언어 자체의 소스 텍스트 (예 : pl/tcl), 파일에 대한 pathname 또는 핸들러에게 자세히해야 할 일을 호출하십시오.

노트

use함수 만들기a 기능.

use무지개 토토 삭제절차를 삭제합니다 무지개 토토.

표 참조PG_LANGUAGE추가 정보 :

테이블 "PG_LANGUAGE"
   속성 |  유형 | 수정 자
--------------+---------+----------
 lanname | 이름 |
 lanispl | 부울 |
 lanpltrusted | 부울 |
 lanplcallfoid | oid |
 랜 컴필라 | 텍스트 |

 lanname | lanispl | lanpltrusted | lanplcallfoid | 랜 컴필라
-----------+--------+---------------------------------------
 내부 | f | f |             0 | N/A
 C | f | f |             0 | /bin/cc
 SQL | f | f |             0 | Postgres

절차 언어에 대한 호출 핸들러는 등록Postgresin 'C'언어는 모든 기능을 상속합니다 'C'함수의 제한.

현재, 절차 무지개 토토에 대한 정의는 할 수 없습니다 그들이 만들어지면 변경됩니다.

usage

이것은 'c'로 작성된 PL 핸들러의 템플릿입니다.

#include "executor/spi.h"
#include "명령/trigger.h"
#include "utils/elog.h"
#include "fmgr.h" / * fmgrvalues ​​struct * /
#include "Access/Heapam.h"
#include "utils/syscache.h"
#include "카탈로그/PG_PROC.H"
#include "카탈로그/pg_type.h"

자료
plsample_call_handler (
     Oid Prooid,
     int pronargs,
     fmgrvalues ​​*proargs,
     bool *isnull)

     Datum Retval;
     TriggerData *trigdata;

     if (currentTriggerData == null) 
          /*
           * 함수로 호출됩니다
           */

          retval = ...
      또 다른 
          /*
           * 트리거 절차라고합니다
           */
          trigdata = currentTriggerData;
          currentTriggerData = null;

          retval = ...

     *isnull = false;
     retval 리턴;

수천 줄의 코드 만 추가해야합니다. PL 호출 핸들러를 완료하는 점. 보다기능 생성컴파일 방법에 대한 정보 로드 가능한 모듈로.

다음 명령은 샘플 절차를 등록합니다 언어:

함수 만들기 plsample_call_handler ()는 불투명합니다
    '/usr/local/pgsql/lib/plsample.so'로
    언어 'c';
절차 언어 'plsample'만들기
    핸들러 plsample_call_handler
    Lancompiler 'pl/sample';

호환성

SQL92

무지개 토토 생성isPostgres확장. 없음무지개 토토 생성성명서SQL92.