이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 36.13. 사용자 정의 토토 캔버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

13장. 확장SQL: 토토 사이트 추천

앞서 언급했듯이 두 가지 종류의 토토 사이트 추천이 있습니다.포스트그레SQL: 기본 토토 사이트 추천(정의됨 프로그래밍 언어) 및 복합 토토 사이트 추천. 이 장 새로운 기본 토토 사이트 추천을 정의하는 방법을 설명합니다.

이 섹션의 예는 다음에서 찾을 수 있습니다.복잡한.sql그리고복잡한.c튜토리얼 디렉토리에 있습니다. 복합 예시는 다음과 같습니다funcs.sql.

사용자 정의 유형에는 항상 입력과 출력 기능. 이러한 함수는 유형이 표시되는 방식을 결정합니다. 문자열(사용자가 입력하고 사용자에게 출력하기 위해) 및 방법 유형은 메모리에 구성됩니다. 입력 기능은 null로 끝나는 문자열을 입력으로 사용하고 다음을 반환합니다. 유형의 내부(메모리 내) 표현입니다. 출력 함수는 유형의 내부 표현을 취하고 null로 끝나는 문자열을 반환합니다.

우리가 다음을 나타내는 복합 유형을 정의한다고 가정합시다 복소수. 당연히 우리는 다음과 같이 메모리에 복잡함C구조:

typedef 구조체 복합체 
    더블엑스;
    이중 y;
 복잡한;

및 형식의 문자열(x,y)으로 외부 문자열 표현.

함수는 일반적으로 작성하기 어렵지 않습니다. 특히 출력 기능. 그러나 여러 가지 짚고 넘어가야 할 점이 있습니다 기억하세요:

  • 외부(문자열) 표현을 정의할 때, 결국에는 완전하고 견고한 문서를 작성해야 한다는 점을 기억하세요. 해당 표현에 대한 파서를 입력 함수로 사용하세요!

    예를 들어:

    복잡한 *
    complex_in(문자 *str)
    
        이중 x, y;
        복잡한 *결과;
        if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2) 
            elog(ERROR, "complex_in: %s 구문 분석 중 오류가 발생했습니다", str);
            NULL을 반환합니다.
    
        결과 = (복소수 *)palloc(sizeof(복소수));
        결과-x = x;
        결과-y = y;
        반환(결과);

    출력 기능은 간단하게 다음과 같습니다:

    문자 *
    complex_out(복잡한 *복잡한)
    
        문자 *결과;
        if (복합 == NULL)
            반환(NULL);
        결과 = (char *) palloc(60);
        sprintf(결과, "(%g,%g)", 복합체-x, 복합체-y);
        반환(결과);
  • 당신은 입력과 출력 기능을 만들도록 노력해야 합니다 서로 반대. 그렇지 않으면 심각한 일이 생길 것입니다. 데이터를 파일로 덤프해야 할 때 문제가 발생합니다. 다시 읽어 들인다(예를 들어, 다른 사람의 데이터베이스로). 컴퓨터). 이는 특히 다음과 같은 경우 흔히 발생하는 문제입니다. 부동 소수점 숫자가 포함됩니다.

정의하려면복잡한입력하세요. 두 개의 사용자 정의 함수를 생성합니다.단지_인그리고complex_out토토 사이트 추천을 생성하기 전:

CREATE FUNCTION complex_in(불투명)
    반품 콤플렉스
    그대로 'PGROOT/튜토리얼/복합체'
    언어 C;

CREATE FUNCTION complex_out(불투명)
    불투명한 반환
    그대로 'PGROOT/튜토리얼/복합체'
    언어 C;

마지막으로 데이터 토토 사이트 추천을 선언할 수 있습니다:

CREATE TYPE 콤플렉스(
    내부 길이 = 16,
    입력 = complex_in,
    출력 = complex_out
);

앞서 논의한 바와 같이,PostgreSQL배열을 완벽하게 지원합니다 기본 유형 중. 추가적으로,PostgreSQL사용자 정의 배열을 지원합니다. 종류도 그렇고. 유형을 정의할 때,PostgreSQL자동으로 지원 제공 해당 유형의 배열에 대해. 역사적인 이유로 배열 유형은 밑줄이 있는 사용자 정의 유형과 이름이 동일합니다. 문자_첨부됨.

복합 토토 사이트 추천에는 정의된 함수가 필요하지 않습니다. 시스템은 이미 그 모양을 이해하고 있기 때문에 내부.

당신의 가치가 데이터 유형의 크기가 수백 바이트를 초과할 수 있습니다(내부 양식) TOAST 가능으로 표시하도록 주의해야 합니다. 이렇게 하려면 내부 표현은 표준 레이아웃을 따라야 합니다. 가변 길이 데이터: 처음 4바이트는 다음과 같아야 합니다.int32전체 길이(바이트)를 포함합니다. 데이텀(자체 포함). 그런 다음 수락하는 모든 기능 유형의 값은 호출할 때 주의해야 합니다.pg_detoast_datum()제공된 값에 --- 값이 NULL이 아닌지 확인한 후 함수가 엄격하지 않음. 마지막으로 다음과 같은 경우 적절한 저장 옵션을 선택하세요. 주는토토 사이트 추천 생성명령.