CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype AS 'definition' LANGUAGE langname [ WITH ( attribute [, ...] ) ] CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype AS 'obj_file', 'link_symbol' LANGUAGE langname [ WITH ( attribute [, ...] ) ]
CREATE FUNCTION �Ͽ������ؿ���������ޤ��� CREATE OR REPLACE FUNCTION �ϡ��������ؿ��κ������ޤ��ϡ���¸������ִ��Τɤ��餫��Ԥʤ��ޤ���
�ѥ���
��������ؿ���̾���Ǥ�������̾���ϰ�դǤ���ɬ�פϤ���ޤ�����ϴؿ��ϥ����С������ɲ�ǽ�Ǥ��뤫��Ǥ�����Ʊ��̾���δؿ��ϰۤʤä�������������ʤ���Фʤ�ޤ���
�⤷����С��ؿ��ΰ����Υǡ������Ǥ������Ϸ��ϡ����ܷ���ʣ�緿��opaque����¸����η���Ʊ��������Ѥ��뤳�Ȥ��Ǥ��ޤ��� opaque �ϡ�char * �ʤɤ��� SQL ���ΰ���������դ��뤳�Ȥ��ޤ�����η��� tablename. columnname %TYPE ����Ѥ��뤳�ȤǼ�����ޤ������η��λ��Ѥϡ��ơ��֥�������ѹ�����ؿ��κ�������Ω�����뤳�Ȥ�������뤳�Ȥ��Ǥ����礬����ޤ���
�֤����ǡ������Ǥ������Ϥη��ϴ��ܷ���ʣ�緿��setof ���� opaque���ޤ��ϡ���¸����η���Ʊ����Τ���ꤹ�뤳�Ȥ��Ǥ��ޤ��� setof �����ҤϤ��δؿ�����1�ĤΥ����ƥ�ǤϤʤ������ƥ�ν�����֤����Ȥ��ޤ�������ͤη���opaque��������줿�ؿ����ͤ��֤��ޤ�������ľ�ܸƤӽФ���뤳�ȤϤǤ��ޤ��ȥꥬ�ؿ��Ϥ��ε�ǽ����Ѥ��ƺ�������ޤ���
�ؿ����������ʸ����Ǥ������ΰ�̣�ϸ���˰�¸���ޤ�������Ū�ʴؿ�̾�����֥������ȥե�����ؤΥѥ���SQL�䤤��碌����³������ǽ줿�ƥ����Ȥʤɤ����Ǥ��ޤ���
���η�����AS��ϡ�C����Υ�������������δؿ�̾��SQL�ؿ���̾����Ʊ���Ǥʤ���硢ưŪ�˥���줿C����ؿ��˻Ȥ��ޤ���ʸ����obj_file ��ưŪ�˥����ɤǤ��륪�֥������Ȥ�ޤ�ե������̾���ǡ� link_symbol ��C���쥽������������δؿ���̾���Ǥ��륪�֥������ȤΥ����ܥ�Ǥ���
plname���������줿��³�������̾���Ǥ���Ȥ��ϡ�sql�� C��internal�� plname�����Ǥ��ޤ����ܺ٤� CREATE LANGUAGE �Ȥ��Ƥ��������������ߴ��Τ��ᡢ����̾����ñ�������dz�뤳�Ȥ�Ǥ��ޤ���
��Ŭ���˻Ȥ���ؿ��Υ��ץ�������Ǥ����ܺ٤ϲ����Ȥ��Ƥ���������
�ؿ�����������桼�������δؿ��ν�ͭ�Ԥˤʤ�ޤ���
�ʲ���°����WITH�����ǻȤ��뤳�Ȥ�����ޤ���
Iscachable�Ϥ��δؿ���Ʊ�������ͤ�Ϳ������Ⱦ��Ʊ����̤��֤��ʤĤޤꡢ�ǡ����١����������ꡢ���ΰ����ꥹ�����¸�ߤ�������ľ�ܻ��Ѥ����ꤷ�ʤ��ˤ��Ȥ��ޤ������ץƥ��ޥ����ϴؿ��θƤӽФ��������ɾ�����뤳�Ȥ��������ɤ�����Ĵ�٤뤿���iscachable��Ȥ��ޤ���
isstrict�ϡ��ؿ��� NULL �������Ȥ���Ϳ������Ȥ��δؿ��Ͼ�� NULL ���֤����Ȥ��ޤ����⤷����°�������ꤵ���ȡ����δؿ��� NULL ������������¹Ԥ���ޤ�������� NULL �Ȥ�����̤���ưŪ�˲��ꤵ��ޤ���isstrict�����ꤵ��ʤ��ȡ����δؿ��� NULL ���ϤǤ�ƤӽФ���ޤ������ξ���ɬ�פ˱����� NULL ���ǧ����Ŭ�ڤ��б��뤳�Ȥ��ؿ��κ����Ԥ���Ǥ�ˤʤ�ޤ���
����˾ܤ��������ؿ��ν����ˤĤ��Ƥ� PostgreSQL �ץ�����ޥ������Ρ��ؿ���Ȥä� PostgreSQL �γ�ĥ�˴ؤ���ϤȤ��Ƥ���������
���٤Ƥ�SQL�η��ι�ʸ�����ϰ������֤��ͤ�ǧ����Ƥ��ޤ�����������������Τ����Ĥ��κ����ʤ��Ȥ���numeric�������٥ե�����ɡˤϡ����δؿ��μ����λ�������Ǥ�����ꡢCREATE FUNCTION ���ޥ�ɤˤ�äƷٹ�ʤ���ޤ���ޤ��ʤĤޤ�ǧ���䶯���Ϥ���ޤ���ˡ�
PostgreSQL�ϴؿ��������С������� ����Ĥ��ޤ�������ϡ��ۤʤ�����η�����äƤ�����̤δؿ���Ʊ��̾����Ȥ����Ȥ��Ǥ���Ȥ������ȤǤ������������ε�ǽ��������C����ؿ��Ǥ����դ��ƻȤ�ʤ��ƤϤʤ�ޤ���
2�Ĥ������ؿ���Ʊ��C��̾������äƤ���ȡ�����˥��顼��ȯ�����ޤ����������뤿��ˤϡ�2�Ĥδؿ��˰ۤʤ�C��̾����Ϳ���ʤ��Ȥ��С�C ��̾���ΰ����Ȥ��ư����η��ʤɤ�Ȥ��ޤ��ˡ������Ƥ�����̾���� CREATE FUNCTION��AS�����ǻ��ꤷ�ޤ����⤷����AS�礬���Τޤޤξ��ϡ�CREATE FUNCTION�Ϥ��δؿ���C��̾����SQL��̾����Ʊ���Ǥ���Ȳ��ꤷ�ޤ���
Ʊ�ͤˡ�SQL�ؿ�̾��ʣ����C����ؿ��ǥ����С������ɤ���Ȥ��ϡ����줾���C����ؿ��Υ����˰ۤʤ�̾����Ϳ�������줾��Υ����С������ɤ��줿SQL�ؿ��Τդ��路��C������������뤿���CREATE FUNCTION��ʸ����� AS������ط�����Ȥ��ޤ���
Ʊ�쥪�֥������ȥե�����Ȥ��롢CREATE FUNCTION �ƤӽФ��������֤��줿��硢���Υե�����ϰ��٤��������ɤ���ޤ���(�����餯��ȯ�ʳ���)�ե����������ɤ��ƥ����ɤ���ˤϡ� LOAD ����Ѥ��ޤ���
�桼������δؿ���������ˤ� DROP FUNCTION ����Ѥ��ޤ���
��¸�δؿ����������ˤϡ� CREATE OR REPLACE FUNCTION ����Ѥ��ޤ���������ˡ�Ǥϴؿ���̾��������η����ѹ����뤳�ȤϤǤ��ʤ����Ȥ����դ��Ʋ�������(�����Ԥʤä���硢�������̤δؿ����������������Ǥ���)�ޤ���CREATE OR REPLACE FUNCTION �Ǥϡ���¸�ؿ�������ͤη����ѹ������뤳�ȤϤǤ��ޤ����Τ���ˤϡ����δؿ������������ٺ������Ʋ�������
�ؿ��������ƺ���������硢�������ؿ��ϸŤ���Τ�Ʊ�����ΤˤϤʤ�ޤ��Ť��ؿ��Ȥ��롢��¸�Υ롼�롢�ӥ塼���ȥꥬ�ʤɤϲ���Ƥ��ޤ��ޤ����ؿ��Ȥ��륪�֥������Ȥ��˲����ʤ��褦�ˡ��ؿ�������ѹ�����ˤ� CREATE OR REPLACE FUNCTION ����Ѥ��ޤ���
ñ���SQL�ؿ����������ˤϰʲ��Τ褦�ˤ��ޤ���
CREATE FUNCTION one() RETURNS integer AS 'SELECT 1 AS RESULT;' LANGUAGE SQL; SELECT one() AS answer; answer -------- 1
������ϡ��桼��������(��ĥ�Ҥϥץ�åȥե�����ˤ�ä��礭���Ѥ��)funcs.so�Ȥ���̾���ζ�ͭ�饤�֥�꤫��롼�����ƤӽФ����Ȥˤ�� C �ؿ���������ޤ�����ͭ�饤�֥��ե�����ϥ����Ф�ưŪ�饤�֥�긡���ѥ����鸡������ޤ�����������Υ롼����Ϸ���������ѥ����Ȥ����Ϥ�����ͤ���������С�TRUE ���֤��ޤ�������� CHECK������ǻ��Ѥ���뤳�Ȥ�տޤ��Ƥ��ޤ���
CREATE FUNCTION ean_checkdigit(char, char) RETURNS boolean AS 'funcs' LANGUAGE C; CREATE TABLE product ( id char(8) PRIMARY KEY, eanprefix char(8) CHECK (eanprefix ~ '[0-9]{2}-[0-9]{5}') REFERENCES brandname(ean_prefix), eancode char(6) CHECK (eancode ~ '[0-9]{6}'), CONSTRAINT ean CHECK (ean_checkdigit(eanprefix, eancode)) );
������ϡ�complex �桼���������point �������֤Ǥη��Ѵ���Ԥʤ��ؿ���������ޤ������δؿ��� C �Υ��������饳��ѥ��뤵�줿ưŪ�˥����ɤ���륪�֥������Ȥˤ�äƼ�������Ƥ��ޤ���(��ͭ���֥������ȥե�����Υѥ�̾�����Τ˻��ꤹ��Ȥ��������ߤϴ�����ʤ���ˡ���������Ƥ��ޤ���) PostgreSQL �˷��Ѵ��ؿ���ưŪ�˸��Ф����뤿��ˡ����� SQL �ؿ�����귿��Ʊ��̾��������ʤ���Фʤ�ޤ���Τǡ������С������ɤ��뤳�Ȥ��Ǥ��ޤ��ؿ�̾�� SQL ������ AS ��� 2 ���ܤη�����Ȥäƥ����С������ɤ���ޤ���
CREATE FUNCTION point(complex) RETURNS point AS '/home/bernie/pgsql/lib/complex.so', 'complex_to_point' LANGUAGE C;
�ؿ��� C ����ϰʲ��Τ褦�ˤʤ�ޤ���
Point * complex_to_point (Complex *z) { Point *p; p = (Point *) palloc(sizeof(Point)); p->x = z->x; p->y = z->y; return p; }