¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE FUNCTION

Name

CREATE FUNCTION -- �������ؿ������

Synopsis

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 �ϡ��������ؿ��κ������ޤ��ϡ���¸������ִ��Τɤ��餫��Ԥʤ��ޤ���

�ѥ�᡼��

name

��������ؿ���̾���Ǥ�������̾���ϰ�դǤ���ɬ�פϤ���ޤ��󡣤���ϴؿ��ϥ����С������ɲ�ǽ�Ǥ��뤫��Ǥ�����Ʊ��̾���δؿ��ϰۤʤä�������������ʤ���Фʤ�ޤ���

argtype

�⤷����С��ؿ��ΰ����Υǡ������Ǥ������Ϸ��ϡ����ܷ���ʣ�緿��opaque����¸����η���Ʊ��������Ѥ��뤳�Ȥ��Ǥ��ޤ��� opaque �ϡ�char * �ʤɤ��� SQL ���ΰ���������դ��뤳�Ȥ򼨤��ޤ�����η��� tablename. columnname %TYPE ����Ѥ��뤳�ȤǼ�����ޤ������η��λ��Ѥϡ��ơ��֥�������ѹ�����ؿ��κ�������Ω�����뤳�Ȥ�������뤳�Ȥ��Ǥ����礬����ޤ���

rettype

�֤����ǡ������Ǥ������Ϥη��ϴ��ܷ���ʣ�緿��setof ���� opaque���ޤ��ϡ���¸����η���Ʊ����Τ���ꤹ�뤳�Ȥ��Ǥ��ޤ��� setof �����ҤϤ��δؿ�����1�ĤΥ����ƥ�ǤϤʤ������ƥ�ν�����֤����Ȥ򼨤��ޤ�������ͤη���opaque��������줿�ؿ����ͤ��֤��ޤ��󡣤�����ľ�ܸƤӽФ���뤳�ȤϤǤ��ޤ��󡣥ȥꥬ�ؿ��Ϥ��ε�ǽ����Ѥ��ƺ�������ޤ���

definition

�ؿ����������ʸ����Ǥ������ΰ�̣�ϸ���˰�¸���ޤ�������Ū�ʴؿ�̾�����֥������ȥե�����ؤΥѥ���SQL�䤤��碌����³������ǽ񤫤줿�ƥ����Ȥʤɤ����Ǥ��ޤ���

obj_file, link_symbol

���η�����AS��ϡ�C����Υ�������������δؿ�̾��SQL�ؿ���̾����Ʊ���Ǥʤ���硢ưŪ�˥�󥯤��줿C����ؿ��˻Ȥ��ޤ���ʸ����obj_file ��ưŪ�˥����ɤǤ��륪�֥������Ȥ�ޤ�ե������̾���ǡ� link_symbol ��C���쥽������������δؿ���̾���Ǥ��륪�֥������ȤΥ�󥯥���ܥ�Ǥ���

langname

plname���������줿��³�������̾���Ǥ���Ȥ��ϡ�sql�� C��internal�� plname�����Ǥ��ޤ����ܺ٤� CREATE LANGUAGE �򻲾Ȥ��Ƥ��������������ߴ��Τ��ᡢ����̾����ñ�������dz�뤳�Ȥ�Ǥ��ޤ���

attribute

��Ŭ���˻Ȥ���ؿ��Υ��ץ�������Ǥ����ܺ٤ϲ����򻲾Ȥ��Ƥ���������

�ؿ�����������桼�������δؿ��ν�ͭ�Ԥˤʤ�ޤ���

�ʲ���°����WITH�����ǻȤ��뤳�Ȥ�����ޤ���

iscachable

Iscachable�Ϥ��δؿ���Ʊ�������ͤ�Ϳ������Ⱦ��Ʊ����̤��֤��ʤĤޤꡢ�ǡ����١��������򤷤��ꡢ���ΰ����ꥹ�����¸�ߤ�������ľ�ܻ��Ѥ����ꤷ�ʤ��ˤ��Ȥ򼨤��ޤ������ץƥ��ޥ����ϴؿ��θƤӽФ��������ɾ�����뤳�Ȥ��������ɤ�����Ĵ�٤뤿���iscachable��Ȥ��ޤ���

isstrict

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;
}

�ߴ���

CREATE FUNCTION ���ޥ�ɤ� SQL99 ���������Ƥ��ޤ��� PostgreSQL �Ǥϻ��ƤϤ��ޤ������ߴ����Ϥ���ޤ���°���ϰܿ������ʤ����ޤ������Ѳ�ǽ�ʸ����ۤʤ�ޤ���

��Ϣ����

DROP FUNCTION , LOAD, PostgreSQL �ץ�����ޥ�����