CREATE [ OR REPLACE ] FUNCTION name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) [ RETURNS rettype | RETURNS TABLE ( column_name column_type [, ...] ) ] { LANGUAGE lang_name | WINDOW | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | COST execution_cost | ROWS result_rows | SET configuration_parameter { TO value | = value | FROM CURRENT } | AS 'definition' | AS 'obj_file', 'link_symbol' } ... [ WITH ( attribute [, ...] ) ]
CREATE FUNCTION�Ͽ������ؿ���������ޤ��� CREATE OR REPLACE FUNCTION�ϡ��������ؿ��κ������ޤ��ϡ���¸������ִ��Τɤ��餫��Ԥ��ޤ��� �ؿ����������ˤϡ��桼���Ϥ��θ����USAGE���¤�ɬ�פǤ���
��������̾���ޤޤ�Ƥ����硢�ؿ��ϻ��ꤵ�줿�������ޤǺ�������ޤ��� ��������̾���ʤ���С��ؿ��ϸ��ߤΥ������ޤǺ�������ޤ��� Ʊ�������������Ʊ�����ϰ����ǡ���������Ĵ�¸�δؿ���̾���ϡ��������ؿ���̾���Ȥ��ƻ��ѤǤ��ޤ��� ���������ۤʤ�����ǡ���������Ĵؿ��Ǥ���С�̾������ʣ���Ƥ���ޤ��� �ʤ���������С��������ȸ����ޤ��ˡ�
��¸�δؿ�����������ؤ���ˤϡ�CREATE OR REPLACE FUNCTION����Ѥ��Ƥ��������� ������ˡ�Ǥϴؿ���̾��������η����ѹ����뤳�ȤϤǤ��ʤ����Ȥ����դ��Ƥ������� �ʤ����Ԥä���硢�������̤δؿ�����������ޤ��ˡ� �ޤ���CREATE OR REPLACE FUNCTION�Ǥϡ���¸�δؿ�������ͤη����ѹ����뤳�ȤϤǤ��ޤ��� ����ͤη����ѹ����������ϡ����δؿ������������ٺ������Ƥ��������� �ʤ���ϡ�OUT�ѥ�������Ѥ��Ƥ����硢�ؿ��������ʤ��¤�OUT�ѥ����η����ѹ��Ǥ��ʤ����Ȥ��̣���ޤ�����
CREATE OR REPLACE FUNCTION����Ѥ��ƴ�¸�δؿ����֤��������硢�ؿ��ν�ͭ�Ԥȸ��¤��Ѥ��ޤ��� ¾�δؿ��˴ؤ��뤹�٤Ƥ�°���ˤϡ����Υ��ޥ�ɤǻ��ꤵ�줿�͡��ޤ��ϰ���Ū���ͤ���������ޤ��� �֤������뤿��ˤϤ��δؿ����ͭ���Ƥ��ʤ���Фʤ�ޤ��� �ʤ���ˤϽ�ͭ���������Υ��ФǤ��뤳�Ȥ��ޤޤ�Ƥ��ޤ�����
�ؿ��������ƺ���������硢�������ؿ��ϸŤ���Τ�Ʊ�����ΤˤϤʤ�ޤ��� �Ť��ؿ��Ȥ��롢��¸�Υ롼�롢�ӥ塼���ȥꥬ�ʤɤ������ʤ���Фʤ�ʤ��Ǥ��礦�� �ؿ��Ȥ��륪�֥������Ȥ��˲����ʤ��褦�˴ؿ�������ѹ�����ˤϡ�CREATE OR REPLACE FUNCTION����Ѥ��Ƥ��������� �ޤ���ALTER FUNCTION����Ѥ��ơ���¸�δؿ������°���ΤۤȤ�ɤ��ѹ����뤳�Ȥ��Ǥ��ޤ���
�ؿ�����������桼���������δؿ��ν�ͭ�ԤȤʤ�ޤ���
�ؿ���������뤿��ˤϡ����������������ͷ����Ф���USAGE���¤�����ʤ���Фʤ�ޤ���
��������ؿ���̾���Ǥ��ʥ���������̾��ġˡ�
�����Υ⡼�ɤǡ�IN��OUT��INOUT��VARIADIC�Τ����줫�Ǥ��� ��ά���Υǥե���Ȥ�IN�Ǥ��� OUT�����Τߤ�VARIADIC�ĸ��³���뤳�Ȥ��Ǥ��ޤ��� �ޤ���RETURNS TABLE��ˡ�Ǥϡ�OUT��INOUT������ξ������Ѥ��뤳�ȤϤǤ��ޤ���
������̾���Ǥ��� �������ˤϤ���̾����ؿ����Τǻ��ѤǤ����Τ⤢��ޤ� �ʺ��ΤȤ���PL/pgSQL�ΤߤǤ��ˡ� ¾�θ���Ǥϡ��ؿ����Τ�Τ����ܤ���¤ꡢ���ϰ�����̾����ñ�ʤ��ɲåɥ�����ȤȤ��ư����ޤ��� �������ؿ��ƤӽФ��������ϰ�����̾������Ѥ��뤳�ȤDz���������뤳�Ȥ��Ǥ��ޤ��� ��項4.3���ȡ� �ɤΤ褦�ʾ��Ǥ��äƤ⡢���ϰ�����̾���ϡ���̤ιԷ�����̾�Ȥʤ�ޤ��Τǽ��פǤ��� �ʽ��ϰ�����̾�����ά������硢�����ƥ�ϥǥե���Ȥ���̾����Ϳ���ޤ�����
�ؿ��ΰ����Υǡ������Ǥ��ʥ���������̾��ġˡ� ���ܥǡ�������ʣ��ǡ��������ɥᥤ���ޤ��ϡ��ơ��֥���η��λ��Ȥ���Ѥ��뤳�Ȥ��Ǥ��ޤ���
�ޤ�������μ����˰�¸���ޤ�����cstring�Ȥ��ä�"������"�����Ǥ�����⤢��ޤ��� �������ϡ������η��λ��꤬�Դ����Ǥ��롢�⤷���ϡ��̾��SQL�ǡ������ν����ۤ��Ƥ��뤳�Ȥ��ޤ���
��η��Ȥ���ˤϡ�table_name.column_name%TYPE�ȵ��Ҥ��ޤ��� �������Ѥ���ȡ��ơ��֥�������ѹ�����Ƥ�ؿ����ƶ�������ʤ��褦�ˤ���Τ����Ω�Ĥ��Ȥ�����ޤ���
�ѥ��������ꤵ��ʤ��ä����Υǥե�����ͤȤ��ƻ��Ѥ���뼰�Ǥ��� ���μ��ϥѥ����ΰ������ȷ�����������ʤ���Фʤ�ޤ��� ���ϥѥ�����INOUT��ޤߤޤ��ˤΤߤ��ǥե�����ͤ���Ĥ��Ȥ��Ǥ��ޤ��� �ǥե�����ͤ���ĥѥ����θ���ˤ���ѥ����Ϥ��٤ơ�Ʊ�ͤ˥ǥե�����ͤ���ĥѥ����Ǥʤ���Фʤ�ޤ���
�ؿ����֤��ǡ����η��Ǥ��ʥ���������̾��ġˡ� ���ܷ���ʣ�緿���ɥᥤ���ޤ��ϡ��ơ��֥���η��λ��Ȥ����ꤹ�뤳�Ȥ��Ǥ��ޤ��� �ޤ����������Ƥ������ˤ��ޤ�����cstring�Τ褦��"������"����ꤹ�뤳�Ȥ���ǽ�Ǥ��� ���δؿ����ͤ��֤����Ȥ����ꤷ�Ƥ��ʤ����ϡ�����ͤȤ���void����ꤷ�Ƥ���������
OUT�⤷����INOUT�ѥ�����¸�ߤ����硢RETURNS����ά���뤳�Ȥ��Ǥ��ޤ��� ��ά���ʤ����ϡ������ѥѥ�������̣�����̷��˽��ä���Ρ��Ĥޤꡢʣ���ν����ѥѥ����������RECORD��ñ��ν����ѥѥ����Ǥ���Ф����Ʊ�������Ǥʤ���Фʤ�ޤ���
SETOF�����Ҥϡ����δؿ�����1�ĤǤϤʤ�ʣ���Υ����ƥ�ν�����֤����Ȥ��ޤ���
��η��ϡ�table_name.column_name%TYPE�ȵ��Ҥ��뤳�Ȥǻ��Ȥ���ޤ���
RETURNS TABLE��ʸ�ˤ�����������̾���Ǥ��� ����ϼº�̾���դ����줿OUT�ѥ�������������̤���ˡ�Ǥ�����RETURNS TABLE��RETURNS SETOF����̣���������ۤʤ�ޤ���
RETURNS TABLE��ʸ�ˤ����������Υǡ������Ǥ���
�ؿ���������Ƥ�������̾���Ǥ��� ���Υѥ����ˤϡ�SQL��C��internal���⤷���ϥ桼�������³�������̾��������ǽ�Ǥ��� �����ߴ����ݻ����뤿�ᡢ����̾����ñ�������ǰϤळ�Ȥ�Ǥ��ޤ���
WINDOW�ϡ����δؿ������̤δؿ��ǤϤʤ�������ɥ��ؿ��Ǥ��뤳�Ȥ��ޤ��� ���ߤ����C����Ǻ��������ؿ��Τߤ˻��Ѥ��뤳�Ȥ��Ǥ��ޤ��� ��¸�δؿ�������֤��������硢WINDOW°�����ѹ����뤳�ȤϤǤ��ޤ���
������°���ϡ��ؿ���ư��˴ؤ��������䤤��碌���ץƥ��ޥ��������ޤ��� �����줫1�ĤΥ�����ɤΤ���Ǥ��ޤ��� ���꤬�ʤ����ϡ��ǥե���Ȥ�VOLATILE�Ȳ�ᤵ��ޤ���
IMMUTABLE�ϡ��ǡ����١������Ф����ѹ���Ԥ�ʤ����ȡ�����ӡ����δؿ���Ʊ�������ͤ�Ϳ�������˾��Ʊ����̤��֤����Ȥ��ޤ��� ����ϡ��ǡ����١����������ꡢ�����ꥹ�����ľ��¸�ߤ��ʤ��������Ѥ����ꤷ�ʤ��Ȥ������ȤǤ��� ���Υ��ץ�����ꤵ�줿��硢��������������Ǥ���ؿ��ƤӽФ��ϡ�¨�¤˴ؿ��ͤ��֤������뤳�Ȥ��Ǥ��ޤ���
STABLE�ϡ��ǡ����١������Ф����ѹ���Ԥ�ʤ����ȡ�����ӡ����δؿ���Ʊ�������ͤ�Ϳ������硢1�ơ��֥륹�������Ǿ��Ʊ����̤��֤�����
SQLʸ���ۤʤ�ȷ�̤��Ѥ�äƤ��ޤ���ǽ�������뤳�Ȥ��ޤ���
����ϡ��ǡ����١���������ʸ��ߤλ����ӤΤ褦�ʡ˥ѥ����ѿ��ʤɤ˷�̤���¸����ؿ���Ŭ���ޤ���
(����ϸ��ߤΥ��ޥ�ɤ��ѹ����줿�Ԥ��䤤��碌����AFTER�ȥꥬ�Ǥ���Ŭ�ڤǤ���)
�ޤ���current_timestamp
�Ϥδؿ��ϡ�1�ĤΥȥ���������Ǥ��ͤ��Ѳ����ʤ����ᡢSTABLE�Ǥ��뤳�Ȥ����դ��Ƥ���������
VOLATILE�ϡ�1�ơ��֥륹�������ˤ����ƴؿ����ͤ��Ѳ������ǽ�������뤿�ᡢ��Ŭ���Ǥ��ʤ����Ȥ��ޤ��� ���Τ褦�ʰ�̣����ưŪ��volatile�ˤʥǡ����١����ؿ��ϡ����Ū�����Ǥ��� �㤨�С�random()��currval()��timeofday()�ʤɤ���ưŪ�ʴؿ��Ǥ��� ���������㤨��setval()�ʤɤ������Ѥ�����ؿ��ϡ����η�̤�����ͽ¬�Ǥ���Ȥ��Ƥ⡢�ƤӽФ����Ŭ�����ʤ��褦��VOLATILE����ưŪ�ˤ�ʬ�ह��ɬ�פ����뤳�Ȥ����դ��Ƥ���������
�ܺ٤�項35.6�Ȥ��Ƥ���������
LEAKPROOF�ϡ��ؿ��������Ѥ�����ʤ����Ȥ��ޤ��� ���ΰ����˴ؤ�����������Ͱʳ���ϳ�餷�ޤ��� �㤨�С����������ΰ����ͤ˴ؤ��륨�顼��å��������֤��ؿ��䲿�餫�Υ��顼��å���������˰������ͤ�ޤ��ؿ���ϳ���ɻߤȤϤ����ޤ��� �䤤��碌�ץ��ʤϡ�security_barrier���ץ�����դ��Ǻ������줿�ӥ塼��ϳ���ɻߴؿ������ߤޤ��� CREATE VIEW�����項37.4�Ȥ��Ƥ��������� ���Υ��ץ����ϥ����ѡ��桼���ˤ�äƤΤ����ꤹ�뤳�Ȥ��Ǥ��ޤ���
CALLED ON NULL INPUT�ʥǥե���ȡˤ���ꤹ��ȡ�������NULL���ޤޤ�Ƥ��Ƥ⡢�ؿ����̾��̤�ƤӽФ���ޤ��� ���ξ��ϡ�ɬ�פ˱�����NULL�ͤ��ǧ����Ŭ�ڤ��б��뤳�Ȥϴؿ������Ԥ���Ǥ�Ǥ���
RETURNS NULL ON NULL INPUT�⤷����STRICT����ꤹ��ȡ��ؿ��ΰ�����NULL�������硢���NULL���֤��ޤ��� ���Υѥ��������ꤵ���ȡ�NULL�����������硢�ؿ��ϼ¹Ԥ���ޤ��� ����ˡ�NULL�Ȥ�����̤���ưŪ��Ϳ�����ޤ���
SECURITY INVOKER����ꤹ��ȡ��ؿ���ƤӽФ����桼���θ��¤ǡ����δؿ����¹Ԥ���ޤ��� ���줬�ǥե���ȤǤ��� SECURITY DEFINER����ꤹ��ȡ��ؿ�����������桼���θ��¤ǡ����δؿ����¹Ԥ���ޤ���
EXTERNAL������ɤϡ�SQL�Ȥθߴ������ݤĤ���˵�����Ƥ��ޤ��� ��������SQL�Ȥϰۤʤꡢ���ε�ǽ�ϳ����ؿ��ˤΤ�Ŭ�Ѥ����櫓�ǤϤʤ����ᡢ���Υ�����ɤϾ�ά��ǽ�Ǥ���
���δؿ��ο���¹ԥ����Ȥ�ɽ�������ǡ�ñ�̤�cpu_operator_cost�Ǥ��� �ؿ���������֤���硢�����1��������Υ����ȤȤʤ�ޤ��� ���Υ����Ȥ����ꤵ��ʤ���硢C���줪��������ؿ��Ǥ�1��¾�Τ��٤Ƥθ���Ǥ�100�Ȥʤ�ޤ��� �ͤ����礭������ȡ��ץ��ʤ�ɬ�װʾ�����ˤ˴ؿ���ɾ�����ʤ��褦�ˤʤ�ޤ���
�ץ��ʤ����ꤹ�롢���δؿ����֤��Կ��ο����ͤ�ɽ�������Ǥ��� ����ϡ��ؿ���������֤���Τ�������줿���Τߵ�����ޤ��� �ǥե���ȿ����ͤ�1000�ԤǤ���
SET��ˤ�ꡢ�ؿ����Ϥޤä����˻��ꤷ������ѥ�������ꤷ���ͤ����ꤷ���ؿ��ν�λ���ˤ����������ͤ��᤹���Ȥ��Ǥ��ޤ��� SET FROM CURRENT�ϡ����å����ˤ�����ѥ����θ����ͤ�ؿ����Ϥޤä�����Ŭ�Ѥ����ͤȤ����ݴɤ��ޤ���
�ؿ���SET�礬�դ��Ƥ����硢�ؿ������Ǽ¹Ԥ����SET LOCAL���ޥ�ɤ�Ʊ���ѿ����Ф�����̤Ϥ��δؿ������¤���ޤ��� ����ѥ����������ͤϴؿ�����λ������˸������ޤ��� ���������̾�Ρ�LOCAL���ʤ���SET���ޥ�ɤ�SET������ޤ��� ����ϲ��˹Ԥ�줿SET LOCAL���ޥ�ɤ��Ф��Ƥ�ۤ�Ʊ���Ǥ��� ���Υ��ޥ�ɤθ��̤ϡ����ߤΥȥ�����������Хå�����ʤ��¤ꡢ�ؿ�����λ��������³������ޤ���
�ؿ����������ʸ��������Ǥ��� ���Υѥ����ΰ�̣�ϸ���˰�¸���ޤ��� ����Ū�ʴؿ�̾�����֥������ȥե�����ؤΥѥ���SQL���ޥ�ɡ���³������ǵ��Ҥ��줿�ƥ����Ȥʤɤ����Ǥ��ޤ���
�ؿ����������ʸ����Ҥ���ݤˡ��̾��ñ�������ǤϤʤ����ɥ�������項4.1.2.4���ȡˤ���Ѥ���������ʤ��Ȥ�¿������ޤ��� �ɥ���������Ѥ��ʤ��¤ꡢ�ؿ�������ñ��������Хå�����å����ɬ����Ťˤ��ƥ��������פ��ʤ���Фʤ�ޤ���
���ι�ʸ��AS��ϡ�C����Υ�������������δؿ�̾��SQL�ؿ���̾����Ʊ���Ǥʤ���硢ưŪ�˥����ɤ����C����ؿ��˻Ȥ��ޤ��� obj_file�Ȥ���ʸ�����ưŪ�˥����ɤǤ��륪�֥������Ȥ�ޤ�ե������̾���ǡ�link_symbol�Ϥ��Υ��֥������ȤΥ����ܥ롢�ĤޤꡢC���쥽������������δؿ���̾���Ǥ��� �����ܥ뤬��ά���줿��硢��������SQL�ؿ���̾����Ʊ����ΤǤ���Ȳ��ꤵ��ޤ���
Ʊ�쥪�֥������ȥե�����Ȥ��롢CREATE FUNCTION�ƤӽФ��������֤��줿��硢���Υե�����ϥ��å������˰��٤��������ɤ���ޤ��� �ʤ����餯��ȯ�ʳ��ǡ˥ե����������ɤ��ƥ����ɤ���ˤϡ����������å����Ϥ��Ƥ���������
�ؿ��˴ؤ���������ʬŪ�����ƻ��ꤹ������Ū����ˡ�Ǥ��� �����ǻ���Ǥ���°����ʲ��˼����ޤ���
STRICT�ޤ���RETURNS NULL ON NULL INPUT��Ʊ���Ǥ���
isCachable�ϡ�IMMUTABLE��Ʊ���Ǥ����������ѻߤ���Ƥ��ޤ��� �������������ߴ������ݻ����뤿�ᡢ�ޤ�ͭ���Ȥ���Ƥ��ޤ���
°��̾�Ǥϡ���ʸ����ʸ������̤��ޤ���
����˾ܤ��������ؿ��κ�����ˡ�ˤĤ��Ƥ�項35.3�Ȥ��Ƥ���������
PostgreSQL�ϴؿ��������С�����������Ĥ��ޤ��� �Ĥޤꡢ���ϰ����η����ۤʤäƤ���С�ʣ���δؿ���Ʊ��̾������Ѥ��뤳�Ȥ��Ǥ��ޤ��� �����������Ƥδؿ���C����ˤ�����̾���ϡ���ʣ���ƤϤ����ޤ��� �������äơ������С������ɤ���C����ؿ��ˤϡ��ۤʤ�C�����̾����Ϳ����ɬ�פ�����ޤ� ���㤨�С�C����ˤ�����̾���ΰ����˰����η�����Ѥ��Ƥ��������ˡ�
Ʊ��̾����Ʊ���������ѥ���������ľ�硢2�Ĥδؿ���Ʊ��Ǥ���Ȥߤʤ���ޤ��� OUT�ѥ�����̵�뤵��ޤ��� �������äơ��㤨�аʲ�������϶��礷�Ƥ��ޤ���
CREATE FUNCTION foo(int) ... CREATE FUNCTION foo(int, out text) ...
�ۤʤ�������Υꥹ�Ȥ���Ĵؿ��ϡ��������˶��礹��ȤϤߤʤ���ޤ����ǥե�����ͤ����ꤵ�줿�����ѻ��˶��礹���ǽ��������ޤ��� �㤨�аʲ���ͤ��Ƥߤޤ��礦��
CREATE FUNCTION foo(int) ... CREATE FUNCTION foo(int, int default 42) ...
foo(10)�Ȥ����ƤӽФ��ϡ��ɤ���δؿ���ƤӽФ��٤����˴ؤ���ۣ�椵�����뤿��˼��Ԥ��ޤ���
������SQL���ι�ʸ�ˤ�����ϰ���������ͤ�������ޤ��� �������������η�����κ���(�㤨��numeric�������٥ե������)�ϡ��ظ�δؿ��μ�������Ǥ�����ꡢCREATE FUNCTION���ޥ�ɤˤ��ٹ�ʤ����߹��ޤ�Ƥ��ޤ��ޤ�(�Ĥޤ�ǧ������⤵��ޤ���)��
��¸�δؿ���CREATE OR REPLACE FUNCTION��Ȥä��֤��������硢�ѥ���̾���ѹ��˴ؤ������¤�����ޤ��� ���Ǥ˲��餫�����ϥѥ����˳�����Ƥ�줿̾�����ѹ����뤳�ȤϤǤ��ޤ��� �ʤ�����������ޤ�̾��������ʤ��ä��ѥ�����̾�����ɲä��뤳�Ȥϲ�ǽ�Ǥ����� ʣ���ν��ϥѥ�����¸�ߤ����硢�ؿ��η�̤�ɽ�魯̵̾ʣ�緿����̾���ѹ����뤳�Ȥˤʤ뤿�ᡢ���ϥѥ�����̾�����ѹ����뤳�ȤϤǤ��ޤ��� ��¸�δؿ��ƤӽФ����֤�����ä�����ư��ʤ��ʤ뤳�Ȥ�μ¤��ɤ�����ˡ����������¤��ʤ���Ƥ��ޤ���
�ؿ���VARIADIC���������STRICT��������줿��硢���θ�̩�������Ǥϡ�����Ĺ������������NULL���ɤ��������ޤ��� ����NULL���Ǥ���äƤ����Ȥ��Ƥ�ؿ��ϸƤӽФ���ޤ���
�����Ǥϡ��鿴�Ը����δ�ñ������Ĥ������ޤ��� 項35.3�ˤϡ����¿���ξ�����㤬���ܤ���Ƥ��ޤ���
CREATE FUNCTION add(integer, integer) RETURNS integer AS 'select $1 + $2;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;
PL/pgSQL�ǡ�����̾����Ѥ��ơ�������1���䤷�ޤ���
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$ BEGIN RETURN i + 1; END; $$ LANGUAGE plpgsql;
ʣ���ν����ѥѥ�������ĥ쥳���ɤ��֤��ޤ���
CREATE FUNCTION dup(in int, out f1 int, out f2 text) AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$ LANGUAGE SQL; SELECT * FROM dup(42);
���Ʊ�����Ȥ�����Ū��̾�����դ���ʣ�緿����Ѥ��ơ�����Ĺ�˹Ԥ����Ȥ��Ǥ��ޤ���
CREATE TYPE dup_result AS (f1 int, f2 text); CREATE FUNCTION dup(int) RETURNS dup_result AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$ LANGUAGE SQL; SELECT * FROM dup(42);
ʣ������֤��̤���ˡ�ϡ�TABLE�ؿ�����Ѥ��뤳�ȤǤ���
CREATE FUNCTION dup(int) RETURNS TABLE(f1 int, f2 text) AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$ LANGUAGE SQL; SELECT * FROM dup(42);
������������ϼºݤˤϡ�1�ĤΥ쥳���ɤǤϤʤ����쥳���ɤ��������֤��ޤ��Τǡ�TABLE�ؿ��Ͼ����Ȥϰۤʤ�ޤ���
SECURITY DEFINER�ؿ��ϴؿ�����������桼���θ��¤Ǽ¹Ԥ���ޤ��Τǡ����δؿ���ְ�äƻ��ѤǤ��ʤ����Ȥ�μ¤ˤ��ʤ���Фʤ�ޤ��� �����塢search_path�ϡ�����Ǥ��ʤ��桼�������߲�ǽ�ʥ������ޤ������������ꤵ��ޤ��� ����ϡ����դΤ���桼�������δؿ��ǻ��Ѥ���륪�֥������Ȥ��褦�ʥ��֥������Ȥ�������뤳�Ȥ��ɤ��ޤ��� �������ä˽��פʤ��Ȥϡ�����ơ��֥륹�����ޤǤ��� ���Υ������ޤϥǥե���ȤǺǽ�˸������졢�����ơ��̾�ï�Ǥ���߲�ǽ�Ǥ��� ����������ޤθ�������Ū�˺Ǹ�ˤ��뤳�Ȥǡ��������ƥ���Ĵ���Ǥ��ޤ��� ���Τ���ˤϡ�pg_temp��search_path�κǸ�ι��ܤȤ��Ƶ��ܤ��Ƥ��������� ���δؿ��ΰ����ʻ�����ˡ��ʲ��˼����ޤ���
CREATE FUNCTION check_password(uname TEXT, pass TEXT) RETURNS BOOLEAN AS $$ DECLARE passed BOOLEAN; BEGIN SELECT (pwd = $2) INTO passed FROM pwds WHERE username = $1; RETURN passed; END; $$ LANGUAGE plpgsql SECURITY DEFINER -- ����Ǥ��륹�����ޡ����θ��pg_temp�Ȥ������search_path����������ꤷ�ޤ��� SET search_path = admin, pg_temp;
PostgreSQL�С������8.3������Ǥϡ�SET���ץ��������ѤǤ��ޤ��� ���Τ���Ť��ؿ��ˤϡ�search_path���ݴɤ������ꡢ�����Ƹ����᤹�Ȥ�����¿��ʣ���ʥ����å����ޤޤ�Ƥ��뤫�⤷��ޤ��� ����������Ū��SET���ץ�������Ѥ���ȡ����ʤ��ñ�ˤʤ�ޤ���
����¾�����դ��٤����Ȥ��ơ��������������줿�ؿ��Ǥϥǥե���ȤǼ¹Ը��¤�PUBLIC����Ϳ����Ƥ��뤳�Ȥ�����ޤ��� �ʾܺ٤�GRANT�Ȥ��Ƥ����������� SECURITY DEFINER�ؿ��λ��Ѥ�����Υ桼���Τߤ����¤��������ȤϤ褯����ޤ��� ���Τ���ˤϡ��ǥե���Ȥ�PUBLIC���¤���夲�������ơ��¹Ը��¤���Ϳ�����ƹԤäƤ��������� �������ؿ������٤ƤΥ桼���˼¹Բ�ǽ�Ȥʤ��֤�¸�ߤ��뤳�Ȥ��ɤ�����ˤϡ�ñ��ȥ���������Ǻ����ȸ��������ԤäƤ��������� �ʲ�������ޤ���
BEGIN; CREATE FUNCTION check_password(uname TEXT, pass TEXT) ... SECURITY DEFINER; REVOKE ALL ON FUNCTION check_password(uname TEXT, pass TEXT) FROM PUBLIC; GRANT EXECUTE ON FUNCTION check_password(uname TEXT, pass TEXT) TO admins; COMMIT;
CREATE FUNCTION���ޥ�ɤ�SQL:1999�ʹߤ��������Ƥ��ޤ��� PostgreSQL�ˤ�����CREATE FUNCTION������ε�ǽ������ޤ����������ʸߴ����Ϥ���ޤ��� °���ˤϰܿ���������ޤ��ޤ������Ѳ�ǽ�ʸ����ۤʤ�ޤ���
¾�Υǡ����١��������ƥ�Ȥθߴ����Τ���ˡ�argmode��argname�����˽��Ȥ��˽��Ȥ�Ǥ��ޤ��� ��������1���ܤ���ˡ��ɸ��˽��äƤ��ޤ���
ɸ��SQL�ϥѥ����Υǥե���Ȥ��ꤷ�Ƥ��ޤ��� DEFAULT������ɤ���Ĺ�ʸ��Oracle��ͳ�褷����Τǡ�ɸ���ή���¿��������ΤǤ��� SQL/PSM�ǤϤ�����ѿ��Υǥե�����ͤȤ��ƻ��Ѥ��Ƥ��ޤ��� =����Ĺ�ʸ��T-SQL�����Firebird�ǻ��Ѥ���Ƥ��ޤ���