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

토토 캔 생성

이름

CREATE TRANSFORM -- 새 토토 캔 정의

시놉시스

다음에 대한 토토 캔 생성 [ 또는 교체]유형_이름언어lang_name(
    함수가 포함된 SQL에서from_sql_function_name (인수_유형[, ...]),
    함수를 사용하여 SQL로to_sql_function_name (인수_유형 [, ...])
);

설명

토토 캔 생성새로운 토토 캔을 정의합니다.토토 캔 생성 또는 교체새 토토 캔을 생성하거나 기존 정의를 대체합니다.

변환은 데이터 유형을 절차적 언어에 적용하는 방법을 지정합니다. 예를 들어, PL/Python에서를 사용하여 함수를 작성할 때hstore유형, PL/Python은 표시 방법에 대한 사전 지식이 없습니다hstorePython 환경의 값. 언어 구현은 일반적으로 기본적으로 텍스트 표현을 사용하지만, 예를 들어 연관 배열이나 목록이 더 적절한 경우에는 불편합니다.

토토 캔은 두 가지 기능을 지정합니다:

  • A "SQL에서"SQL 환경의 유형을 언어로 변환하는 함수입니다. 이 함수는 해당 언어로 작성된 함수의 인수에 대해 호출됩니다.

  • A "SQL로"언어에서 SQL 환경으로 유형을 변환하는 함수입니다. 이 함수는 해당 언어로 작성된 함수의 반환 값에 대해 호출됩니다.

이 두 기능을 모두 제공할 필요는 없습니다. 지정되지 않은 경우 필요한 경우 언어별 기본 동작이 사용됩니다. (특정 방향으로의 변환이 전혀 발생하지 않도록 하려면 항상 오류가 발생하는 변환 함수를 작성할 수도 있습니다.)

변환을 생성하려면 다음을 소유하고 있어야 합니다.사용유형에 대한 권한, 있음사용언어에 대한 특권과 소유와 소유실행지정된 경우 from-SQL 및 to-SQL 함수에 대한 권한.

매개변수

유형_이름

변환의 데이터 유형 이름.

lang_name

변환 언어의 이름.

from_sql_function_name(argument_type [, ...])

SQL 환경의 유형을 언어로 변환하는 함수의 이름. 유형의 인수 하나를 사용해야 합니다.내부및 반환 유형내부. 실제 인수는 토토 캔에 대한 유형이 되며 함수는 마치 토토 캔된 것처럼 코딩되어야 합니다. (단, SQL 수준의 함수를 반환하는 선언은 허용되지 않습니다.내부유형의 인수가 하나 이상 없음내부.) 실제 반환 값은 언어 구현에 따라 다릅니다.

to_sql_function_name(argument_type [, ...])

언어에서 SQL 환경으로 유형을 변환하기 위한 함수의 이름. 유형의 인수 하나를 사용해야 합니다.내부그리고 변환 유형인 유형을 반환합니다. 실제 인수 값은 언어 구현에 따라 다릅니다.

유형에 대한 토토 캔을 생성하려면hstore및 언어plpythonu, 먼저 유형과 언어를 설정하세요.

CREATE TYPE hstore ...;

언어 만들기 plpythonu ...;

그런 다음 필요한 기능을 생성하십시오:

함수 생성 hstore_to_plpython(val 내부) 내부 반환
언어 C 엄격한 불변
AS ...;

함수 생성 plpython_to_hstore(val Internal) 반환 hstore
언어 C 엄격한 불변
AS ...;

그리고 마지막으로 토토 캔을 생성하여 모두 함께 연결합니다.

hstore LANGUAGE plpythonu에 대한 토토 캔 생성(
    함수가 포함된 SQL에서 hstore_to_plpython(내부),
    함수를 사용하여 SQL로 plpython_to_hstore(내부)
);

실제로 이러한 명령은 확장 기능에 포함됩니다.

기여섹션에는 실제 사례로 사용할 수 있는 변환을 제공하는 여러 확장 기능이 포함되어 있습니다.

호환성

이 형태는토토 캔 생성포스트그레SQL확장. 가 있습니다.토토 캔 생성명령SQL표준이지만 데이터 유형을 클라이언트 언어에 맞게 조정하기 위한 것입니다. 해당 사용법은 다음에서 지원되지 않습니다.PostgreSQL.