��PostgreSQL����ե����2025��11��21�����š������å��������
¾�ΥС�������ʸ�� �� 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

̾��

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

����

CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] )
    RETURNS rettype
  { LANGUAGE langname
    | IMMUTABLE | STABLE | VOLATILE
    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    | [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER
    | AS 'definition'
    | AS 'obj_file', 'link_symbol'
  } ...
    [ WITH ( attribute [, ...] ) ]

����

CREATE FUNCTION �Ͽ������ؿ���������ޤ��� CREATE OR REPLACE FUNCTION �ϡ��������ؿ��κ������ޤ��ϡ���¸������ִ��Τɤ��餫��Ԥʤ��ޤ���

��������̾���ޤޤ�Ƥ����硢�ؿ��ϻ��ꤵ�줿�������ޤǺ�������ޤ��� ��������̾���ʤ���С��ؿ��ϸ��ߤΥ������ޤǺ�������ޤ��� �������ؿ���̾���ˤϡ�Ʊ�������������Ʊ�������ǡ���������Ĵ�¸�δؿ���Ʊ��̾���ϻ��ѤǤ��ޤ��� ���������ۤʤ�����ǡ���������Ĵؿ��Ǥ���С�Ʊ��̾���Ǥ⹽���ޤ��� (����������С������� �ȸ����ޤ�)��

��¸�δؿ�����򹹿�����ˤϡ�CREATE OR REPLACE FUNCTION ����Ѥ��ޤ��� ������ˡ�Ǥϴؿ���̾��������η����ѹ����뤳�ȤϤǤ��ʤ����Ȥ����դ��Ʋ������� (�����Ԥʤä���硢�������̤δؿ����������������Ǥ���) �ޤ���CREATE OR REPLACE FUNCTION �Ǥϡ���¸�ؿ�������ͤη����ѹ������뤳�ȤϤǤ��ޤ��� ���Τ���ˤϡ����δؿ������������ٺ������Ʋ�������

�ؿ��������ƺ���������硢�������ؿ��ϸŤ���Τ�Ʊ�����ΤˤϤʤ�ޤ��� �Ť��ؿ��򻲾Ȥ��롢��¸�Υ롼�롢�ӥ塼���ȥꥬ�ʤɤϲ���Ƥ��ޤ��ޤ��� �ؿ��򻲾Ȥ��륪�֥������Ȥ��˲����ʤ��褦�ˡ��ؿ�������ѹ�����ˤ� CREATE OR REPLACE FUNCTION ����Ѥ��ޤ���

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

�ѥ�᡼��

name

��������ؿ���̾���Ǥ���

argtype

�⤷����С��ؿ��ΰ����Υǡ������Ǥ���(�������޽���̾��ġ�) �����η��ϡ����ܡ�ʣ�硢�ɥᥤ�󡢤⤷���ϴ�¸����η��Υ��ԡ�����Ѥ��뤳�Ȥ��Ǥ��ޤ���

��η��򻲾Ȥ���ˤϡ�tablename.columnname%TYPE �ȵ��Ҥ��ޤ��� �������Ѥ��ơ��ơ��֥�������ѹ�����Ƥ�ؿ����ƶ�������ʤ��褦�ˤ��뤳�Ȥ��Ǥ��ޤ���

�ޤ�������μ����˰�¸���ޤ�����cstring �Ȥ��ä� "������" ����ꤹ�뤳�Ȥ�Ǥ����礬����ޤ��� �������ϡ��ºݤΰ����η����Դ����˻��ꤵ��Ƥ��롢�⤷���ϡ����̤�SQL�ǡ������ν����ۤ��Ƥ��뤳�Ȥ򼨤��ޤ���

rettype

�֤����ǡ������Ǥ���(�������޽���̾��ġ�) �֤����ǡ������ϡ����ܷ���ʣ�緿���ɥᥤ�󷿤Τ����줫���⤷���ϡ���¸����η��Υ��ԡ������ꤹ�뤳�Ȥ��Ǥ��ޤ��� ��¸����η��򻲾Ȥ�����ˡ�ˤĤ��Ƥϡ����argtype�������򻲾Ȥ��Ƥ���������

�ޤ����������Ƥ������ˤ��ޤ�����cstring �Τ褦��"������" ����ꤹ�뤳�Ȥ���ǽ�Ǥ��� SETOF �����Ҥϡ����δؿ�����1 �ĤΥ����ƥ�ǤϤʤ������ƥ�ν�����֤����Ȥ򼨤��ޤ���

langname

�ؿ���������Ƥ�������̾���Ǥ��� ���Υѥ�᡼���ˤϡ�SQL��C��internal���⤷���ϥ桼�������³�������̾��������ǽ�Ǥ��� (createlang �⻲�Ȥ��Ƥ���������) �����ߴ��Τ��ᡢ����̾����ñ�������dz�뤳�Ȥ�Ǥ��ޤ���

IMMUTABLE
STABLE
VOLATILE

�嵭��°������ꤹ��ȡ��¹Ի��κ�Ŭ���Τ��ᡢ�ؿ���ʣ����ɾ���� 1 �Ĥ�ɾ�����֤������Ƥ�����ʤ����ɤ����Ȥ�������򡢥����ƥ���󶡤��뤳�Ȥ��Ǥ��ޤ��� ���ꤹ��Τϡ������줫 1 �ĤΤߤǤ��� ���꤬�ʤ����ϡ��ǥե���Ȥ�VOLATILE �Ȳ�ᤵ��ޤ���

IMMUTABLE ����ꤹ��ȡ����δؿ���Ʊ�������ͤ�Ϳ������硢���Ʊ����̤��֤��ޤ��� �Ĥޤꡢ�ǡ����١����򸡺������ꡢ���ΰ����ꥹ�����ľ��¸�ߤ��ʤ��������Ѥ�����Ϥ��ޤ��� ���Υ��ץ���󤬻��ꤵ�줿��硢����������Ǥ���ؿ����ƤӽФ����Ȥ������ؿ��ͤ��֤������뤳�Ȥ��Ǥ��ޤ���

STABLE ����ꤹ��ȡ����δؿ���Ʊ�������ͤ�Ϳ����줿��硢1 �ơ��֥륹�������Ǿ��Ʊ����̤��֤����Ȥ��Ǥ��ޤ��� �����������η�̤ϡ�SQL ʸ���ۤʤ���Ѥ�äƤ��ޤ���ǽ��������ޤ��� ����ϡ��ؿ��η�̤����ǡ����١��������� (���ߤΥ����ॾ����Τ褦��) �ѥ�᡼���ѿ��ʤɤ˰�¸����ؿ��ˤ�����Ŭ�ڤ�����Ȥ����ޤ��� �ޤ���current_timestamp �ե��ߥ�δؿ��ϡ������ͤ��ȥ�󥶥����������ѹ�����ʤ����ᡢSTABLE �Ǥ��뤳�Ȥ����դ��Ƥ���������

VOLATILE ����ꤹ��ȡ�1 �ơ��֥륹�������Ǥ⤽�δؿ����ͤ��ѹ����뤳�Ȥ���ǽ�ˤʤ�ޤ��� �������äơ���Ŭ����Ԥʤ����ȤϤǤ��ޤ��� ���Τ褦�ʰ�̣�Ǵ�ȯŪ (volatile) �ʥǡ����١����ؿ��ϡ����Ū�����Ǥ��� ���Ȥ��С�random()��currval()��timeofday() �ʤɤǤ��� �ޤ����㤨�Ф��Ȥ��� setval()�Ȥ��ä������Ѥ�����ؿ��ϡ����η�̤�����ͽ¬�Ǥ���Ȥ��Ƥ⡢�ƤӽФ����Ŭ�����ʤ��褦����ȯŪ��ʬ�ह��ɬ�פ����뤳�Ȥ����դ��Ƥ���������

CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT
STRICT

CALLED ON NULL INPUT (�ǥե����) ����ꤹ��ȡ����δؿ��ΰ����� NULL ��������Ǥ⡢�̾��̤�ƤӽФ���ޤ��� ���ξ��ϡ�ɬ�פ˱����� NULL �ͤ��ǧ����Ŭ�ڤ��б��򤹤뤳�Ȥ��ؿ��κ����Ԥ���Ǥ�ˤʤ�ޤ���

RETURNS NULL ON NULL INPUT �⤷���� STRICT ����ꤹ��ȡ��ؿ��ΰ����� NULL �������硢��� NULL ���֤��ޤ��� ���Υѥ�᡼�������ꤵ���ȡ����δؿ��� NULL ������������¹Ԥ���ޤ��� ����ˡ�NULL �Ȥ�����̤���ưŪ�˲��ꤵ��ޤ���

[EXTERNAL] SECURITY INVOKER
[EXTERNAL] SECURITY DEFINER

SECURITY INVOKER ����ꤹ��ȡ��ؿ���ƤӽФ����桼���θ��¤ǡ����δؿ����¹Ԥ���ޤ��� ���줬�ǥե���ȤǤ��� SECURITY DEFINER ����ꤹ��ȡ��ؿ�����������桼���θ��¤ǡ����δؿ����¹Ԥ���ޤ���

������� EXTERNAL �ϡ�SQL �Ȥθߴ������ݤĤ����¸�ߤ��Ƥ��ޤ��� ��������SQL �Ȥϰۤʤꡢ���ε�ǽ�ϳ����ؿ��ˤΤ�Ŭ�Ѥ����櫓�ǤϤʤ����ᡢ���Υ�����ɤϥ��ץ����Ǥ���

definition

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

obj_file, link_symbol

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

attribute

�ؿ��˴ؤ���������ʬŪ�����򤷤ƻ��ꤹ������Ū����ˡ�Ǥ��� �����Ǵ�Ϣ����Τϡ��ʲ���°���Ǥ���

isStrict

STRICT �ޤ��� RETURNS NULL ON NULL INPUT ��Ʊ���Ǥ���

isCachable

isCachable �ϡ�IMMUTABLE ��Ʊ���Ǥ��������Ǥ��ѻߤ���Ƥ��ޤ��� �����������̸ߴ����Τ��ᡢ�ޤ������դ��뤳�ȤϤǤ��ޤ���

°��̾�Ǥϡ���ʸ����ʸ������̤��ޤ���

����

����˾ܤ��������ؿ��ν����ˤĤ��Ƥ� ��33.3�򻲾Ȥ��Ƥ���������

SQL�η��ι�ʸ�����ϰ������֤��ͤˤ����ƴ�����ǧ����Ƥ��ޤ��� ��������������Τ����Ĥ��κ����ʤ��Ȥ���numeric�������٥ե�����ɡˤϡ����δؿ��μ����λ�������Ǥ�����ꡢCREATE FUNCTION ���ޥ�ɤˤ�äƷٹ�ʤ���ޤ���ޤ��ʤĤޤ�ǧ���䶯���Ϥ���ޤ���ˡ�

PostgreSQL�ϴؿ��������С�����������Ĥ��ޤ��� ����ϡ��ۤʤ�����η�����äƤ�����̤δؿ���Ʊ��̾����Ȥ����Ȥ��Ǥ���Ȥ������ȤǤ��� �����������Ƥδؿ���C����ˤ�����̾���ϰۤʤ�ɬ�פ�����ޤ��� �������äơ������С������ɤ���C�δؿ��ˤϰۤʤ�C��̾����Ϳ����ɬ�פ�����ޤ��� (�㤨�С�C��̾���ΰ����˰����η�����Ѥ��Ƥ���������)

Ʊ�쥪�֥������ȥե�����򻲾Ȥ��롢CREATE FUNCTION �ƤӽФ��������֤��줿��硢���Υե�����ϰ��٤��������ɤ���ޤ��� (�����餯��ȯ�ʳ���)�ե�����򥢥�����ɤ��ƥ����ɤ���ˤϡ�LOAD ���ޥ�ɤ���Ѥ��Ƥ���������

�桼������δؿ���������ˤ� DROP FUNCTION ����Ѥ��Ƥ���������

�ؿ������Ǥϡ�ñ��������Хå�����å����ɬ��2�Ť˥��������פ��ʤ���Фʤ�ޤ���

�ؿ����������ˤϡ��桼���Ϥ��θ���� USAGE ���¤�ɬ�פǤ���

��

�����Ǥϡ��鿴�Ը����δ�ñ����򼨤��ޤ��� ���¿���ξ�����㤬��33.3�˵��ܤ���Ƥ��ޤ���

CREATE FUNCTION add(integer, integer) RETURNS integer
    AS 'select $1 + $2;'
    LANGUAGE SQL
    IMMUTABLE
    RETURNS NULL ON NULL INPUT;

�ߴ���

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

��Ϣ����

ALTER FUNCTION, DROP FUNCTION, GRANT, LOAD, REVOKE, createlang