CREATE TYPE typename ( INPUT = input_function, OUTPUT = output_function , INTERNALLENGTH = { internallength | VARIABLE } [ , EXTERNALLENGTH = { externallength | VARIABLE } ] [ , DEFAULT = default ] [ , ELEMENT = element ] [ , DELIMITER = delimiter ] [ , SEND = send_function ] [ , RECEIVE = receive_function ] [ , PASSEDBYVALUE ] [ , ALIGNMENT = alignment ] [ , STORAGE = storage ] )
�������뷿��̾���Ǥ���
��������������Ĺ����ꤹ���ƥ���ͤǤ���
���������γ���(ɽ����)Ĺ����ꤹ���ƥ���ͤǤ���
CREATE FUNCTION �ˤ�äƺ������줿�����������Υǡ������η������������Υǡ������Ѵ�����ؿ���̾���Ǥ���
CREATE FUNCTION �ˤ�äƺ������줿�����������ˤ��ǡ����� ɽ����Ŭ���������Υǡ������Ѵ�����ؿ���̾���Ǥ���
���������Τ����ǡ�������������Ǥη�����ꤷ�ޤ���
���η��ˤ��������ͤδ֤ζ��ڤ�ʸ���Ǥ���
�ǡ������Υǥե�����ͤǤ����̾�Ϥ���Ͼ�ά�����Τǥǥե���Ȥ� NULL �ˤʤ�ޤ���
CREATE FUNCTION �ˤ�äƺ������줿�����η��Υǡ�����¾�Υޥ����ž���Ǥ���褦�ʷ������Ѵ�����ؿ���̾���Ǥ���
CREATE FUNCTION �ˤ�äƺ������줿�����η��Υǡ����� ¾�Υޥ��顢����������ž���Ǥ���褦�ʷ������Ѵ�����ؿ���̾���Ǥ���
�ǡ������γ�Ǽ�������־��Ǥ������Υ��ץ�����ꤵ�줿��硢 char�� int2�� int4�ޤ���double�Ǥ���ɬ�פ�����ޤ����ǥե���Ȥ�int4�Ǥ���
�ǡ������γ�Ǽ��ˡ�Ǥ������ꤹ����ϡ� plain�� external�� extended���ޤ��� 'main �Ǥʤ���Фʤ�ޤ��ǥե���Ȥ� plain �Ǥ���
CREATE TYPE��Ȥ����Ȥˤ�äơ��桼����PostgreSQL�θ��ߤΥǡ����١����ǻ��ѤǤ��롢�������桼������ǡ���������Ͽ�Ǥ��ޤ���������������桼���Ϥ��ν�ͭ�ԤȤʤ�ޤ��� typename �Ͽ���������̾���ǡ����Υǡ����١�����������줿��̾����ǰ�դǤʤ���Фʤ�ޤ���
CREATE TYPE �Ǥϡ���������������ˡ� (CREATE FUNCTION ���Ѥ���)2�Ĥδؿ�����Ͽ���Ƥ���ɬ�פ�����ޤ��� ���������ܷ���ɽ�������ϡ����γ���ɽ�������η��Ѥ�������줿�黻�Ҥȴؿ������Ѳ�ǽ������ɽ���������Ѵ����롢 input_function �Ƿ��ꤵ��ޤ��������� output_function �Ϥ��εդ��Ѵ��ޤ������ϴؿ��ϡ�1�Ĥ� opaque ���ΰ������ޤ��ϡ� opaque, OID, int4 �Ȥ���3�Ĥΰ���(�ǽ�ΰ����ϡ�C ������������ϥƥ����ȡ�2���ܤ����ξ������Ǥη���3���ܤϴ��Τξ�硢�о���� typmod �Ǥ���)��Ȥ�褦���������ޤ������ϴؿ��ϡ�1�Ĥ� opaque ���ΰ������ޤ��ϡ� opaque, OID �Ȥ��� 2 �Ĥΰ���(�ǽ�ΰ����ϼºݤϥǡ��������ȤǤ��������������ϴؿ��Ϻǽ���������ʤ���Фʤ�ޤ���Τǡ������ opaque ���Ȥ��Ƽ����դ���褦�������������ñ�Ǥ���2���ܤΰ����Ͼ��Ʊ�͡����ξ��Ρ����Ǥη��Ǥ���)��Ȥ�褦���������ޤ���
���������ܷ��� internallength �����������Ȥʤ����Ĺ�Ȥ��ƺ������뤳�Ȥ⡢ internallength ��VARIABLE �����ꤹ�뤳�ȤǼ�����롢����Ĺ�Ȥ��ƺ������뤳�Ȥ�Ǥ��ޤ���(����Ū�ˤϡ������ typlen �� -1 �����ꤹ�뤳�Ȥ�ɽ������ޤ���)���Ƥβ���Ĺ��������ɽ���ϡ������ͤ���Ĺ�������ͤ���Ϥޤ�ʤ���Фʤ�ޤ���
����ɽ��������Ʊ�ͤˤ��ơ� externallength ����ɤ���Ѥ��ƻ��ꤵ��ޤ���(�����ͤϸ����Ѥ���ޤ����̾��ά���졢���Υǥե���Ȥ� VARIABLE �Ȥ��ޤ���)
��������Ǥ��뤳�Ȥ��ˤϡ� ELEMENT ������ɤ���Ѥ����������Ǥη�����ꤷ�Ʋ��������㤨�С�4 �Х�������("int4") ��������������ˤϡ�
ELEMENT = int4
�Ȼ��ꤷ�Ʋ����������ܺ٤ϡ���Ҥ������������ޤ���
���η��ˤ������γ��������ˤ������ʹ֤ζ��ڤ������ˡ� delimiter �������ʸ�������ꤹ�뤳�Ȥ��Ǥ��ޤ����ǥե���Ȥζ��ڤ�ʸ���ϥ����(',')�Ǥ������ζ��ڤ�ʸ���ϡ��������Ǥη��˴ط������ΤǤ��ꡢ�����Τ˴ط������ΤǤʤ����Ȥ����դ��Ʋ�������
�桼�������Υǡ���������Υǥե���Ȥ� NULL �ʳ��β����ˤ�������硢�ǥե�����ͤ���ꤹ�뤳�Ȥ��Ǥ��ޤ������Υǥե�����ͤ� DEFAULT ������ɤǻ��ꤷ�Ʋ�������(������ˡ�Υǥե�����ͤϡ�����������Ϳ���줿������Ū�� DEFAULT ��ˤ�äƾ������ǽ��������ޤ���)
���ץ����ΰ��� send_function �� receive_function �ϡ����ߡ����Ѥ���Ƥ��ޤ����̾��(���줾��Υǥե���ȡ� output_function �� input_function �����ꤵ�졣)��ά����ޤ��������δؿ��Ϻ��塢�ޥ������¸�ΥХ��ʥ�ɽ������ꤹ�뤿������褹���ǽ��������ޤ���
���ץ����Υե饰 PASSEDBYVALUE �ϡ����Υǡ��������ͤϻ��ȤǤϤʤ��ͤˤ�ä��Ϥ���뤳�Ȥ��ޤ���(�ۤȤ�ɤΥޥ���Ǥ� 4 �Х��ȡ��ޤ�� 8 �Х��ȤȤʤ� ) Datum ����Ĺ������ɽ���η����ͤˤ�ä��Ϥ����Ȥ��Ǥ��ʤ����Ȥ����դ��Ʋ�������
alignment ������ɤϡ����Υǡ�������ɬ�פȤ�����Ǽ�������֤���ꤷ�ޤ��������ǽ���ͤϡ�1�Х��ȡ�2�Х��ȡ�4�Х��ȡ�8�Х��ȶ����ΰ��ֹ�碌��Ʊ���Τ��Ȥ��̣���ޤ�������Ĺ���ΰ������֤Ϻ���Ǥ� 4 ������ʤ���Фʤ�ʤ����Ȥ����դ��Ʋ��������ǽ�����ǤȤ��� int4 ������ʤ���Фʤ�ʤ�����Ǥ���
������� storage ����Ѥ��뤳�Ȥǡ�����Ĺ�ǡ��������Ǽ����ݤ���ά�����뤳�Ȥ��Ǥ��ޤ���(����Ĺ�η��ˤ� plain �Τߤ�������Ƥ��ޤ�)�� plain �ϥǡ��������Ф��� TOAST ��Ȥ��ʤ����ޤ����ǡ����Ͼ�˰���dz�Ǽ���졢���̤���ޤ��� extended �� TOAST �����Ƥε�ǽ��ͭ���ˤ��ޤ��������ƥ�Ϥޤ�Ĺ���ǡ����̤ͤ��褦�Ȥ�������Ǥ�ޤ�Ĺ�������ͤ�ᥤ��ơ��֥�ιԤ��������ޤ��� external �ϥᥤ��ơ��֥뤫���ͤ������뤳�Ȥ�����ޤ����������ƥ�ϥǡ����̤��褦�Ȥ��ޤ��� main �ϥǡ����ΰ��̤�����ޤ������ͤ�ᥤ��ơ��֥뤫�������뤳�Ȥ�ߤ�ޤ���(���γ�Ǽ��åɤ���ĥǡ��������ƥ�ϡ�¾�˹Ԥ�Ŭ�礵������ˡ���ʤ����ˤϥᥤ��ơ��֥뤫��������Ƥ��ޤ����⤷��ޤ���extended �� external �����ꤵ��Ƥ��륢���ƥ����ͥ�褷�ƥᥤ��ơ��֥�˻Ĥ���ޤ���)
�桼������Υǡ����������������ȡ� PostgreSQL �ϡ���ưŪ�ˡ�����̾���Ȥ��ƴ��ܷ�̾�����˥���������������դ�������Ϣ��������������ޤ����ѡ����Ϥ���̿̾��§������ foo[] ������ؤ���� _foo ���ؤ�����Ѵ����ޤ������ΰ���Ū�˺�����������ϲ���Ĺ�ǡ��Ȥ߹��������ϴؿ� array_in �� array_out ����Ѥ��ޤ���
����Ū�˹ͤ���ȡ� "�����ƥब��ưŪ��������������������ΤǤ���С� ELEMENT ���ץ����Ϥɤ�����¸�ߤ���Τ�����" ���ԻĤ˻פ��Ǥ��礦�� ELEMENT ����̣����ġ�ͣ��ξ�礬����ޤ�������ϡ�����Ū�� N �Ĥ�Ʊ��Τ�Τ�����Ȥʤꡢ����N�Ĥ��Ф��������ֹ����ꤷ��ľ�ܥ��������Ǥ�������ˡ����η����ΤȤ��ơ����餫�������Ѱդ��뤳�Ȥ�ͽ�ꤹ�롢����Ĺ�η������������Ǥ����㤨�С�name ���ϡ��������ǤǤ��� chars ���Τ�Τˤ��Τ褦�ʥ���������ˡ����Ĥ��Ƥ��ޤ���2������ point ���Ǥϡ�����2 �Ĥ���ư�������ι������Ǥ� point[0] ����� point[1] �Ȥ�������������Ԥʤ����Ȥ��Ǥ��ޤ������ε�ǽ�ϡ������������������Τ� N �Ĥ�Ʊ��Υե�����ɤ��¤ӤǤ��롢����Ĺ�η��ǤΤ�ư��ޤ��������ֹ���꤬��ǽ�ʲ���Ĺ���ϡ� array_in �� array_out ����Ѥ��ơ��Ʋ����줿����ɽ�������ɬ�פ�����ޤ������Ū����ͳ�ˤ�ꡢ����Ĺ���ؤ������ֹ����� 0 ����Ϥޤꡢ����Ĺ����ξ��� 1 ����Ϥޤ�ޤ���(��������餫�˴ְ㤤�ʤΤǤ������ѹ�����ˤ��٤����ޤ�����)
�桼���������̾���ϥ������������ ("_") ����Ϥ�뤳�ȤϤǤ��ޤ��ޤ���30ʸ��(�⤷���� ���̲�����ɽ���� NAMEDATALEN-2)Ĺ�ޤǤǤ���(¾��̾���ξ��� NAMEDATALEN-1 ʸ��Ĺ�ޤǵ�����ޤ���)�����������������Ϥޤ뷿̾�ϡ�����Ū�˺������������̾���Τ����ͽ��Ƥ��ޤ���
�ʲ��Υ��ޥ�ɤϡ� box �ǡ�����������������η���ơ��֥��������ǻ��Ѥ��ޤ���
CREATE TYPE box (INTERNALLENGTH = 16, INPUT = my_procedure_1, OUTPUT = my_procedure_2); CREATE TABLE myboxes (id INT4, description box);
box ��������¤����4�Ĥ� float4 ������Ǥ��ä��Ȥ���ȡ��ʲ��Τ褦�˽��Ȥ�Ǥ��ޤ���
CREATE TYPE box (INTERNALLENGTH = 16, INPUT = my_procedure_1, OUTPUT = my_procedure_2, ELEMENT = float4);
����ˤ�ꡢbox �ͤ���ư���������Ǥ������ֹ�ǥ��������Ǥ��ޤ�������¾�ϡ�����Ʊ�ͤ�ư��ޤ���
�ʲ�����ϡ��顼�����֥������ȷ�����������ơ��֥�����ˤƤ������Ѥ��ޤ���
CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout, INTERNALLENGTH = VARIABLE); CREATE TABLE big_objs (id int4, obj bigobj);