¾�ΥС�������ʸ�� �� 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

38.11. PL/pgSQL�ˤ�볫ȯ�����Υҥ��

PL/pgSQL�dz�ȯ����1�Ĥ��ɤ���ˡ�ϡ��ؿ����������Τ˼�ʬ�ι����ʥƥ����ȥ��ǥ�����Ȥ����⤦1�ĤΥ�����ɥ���psql����Ѥ��ƴؿ����ɤ߹��ޤ��ƻ��Ԥ����ȤǤ��� ������ˡ�ǹԤ����ˤ�CREATE OR REPLACE FUNCTION����Ѥ��ƴؿ���������������ɤ��Ǥ��礦�� ������ˡ�ǥե��������ɤ߹��ߤ���ȡ��ؿ�����򹹿����뤳�Ȥ��Ǥ��ޤ��� �㤨�С��ʲ��Τ褦�ˤ��ޤ���

CREATE OR REPLACE FUNCTION testfunc(integer) RETURNS integer AS $$
          ....
$$ LANGUAGE plpgsql;

psql��¹Ԥ����ʲ��Τ褦�˴ؿ�����ե�������ɤ߹��ߡ��ޤ��Ϻ��ɤ߹��ߤ��뤳�Ȥ��Ǥ��ޤ���

\i filename.sql

���θ夹���ˡ��ؿ������뤿���SQL���ޥ�ɤ�ȯ�Ԥ��뤳�Ȥ��Ǥ��ޤ���

PL/pgSQL�ˤ����볫ȯ�Τ⤦1�Ĥ��ɤ���ˡ�ϡ���³������γ�ȯ��ǽ�����GUI�ǡ����١������������ġ������Ѥ��뤳�ȤǤ��� ¾�ˤ⤢��ޤ�����pgAdmin�����������ġ���ΰ���Ǥ��� ���������ġ���ϡ�ñ�������򥨥������פ������ꡢ�ؿ��κ��ľ����ǥХå����ưפ˹Ԥ����ꤹ�������ʵ�ǽ��褯���äƤ��ޤ���

38.11.1. ��������

PL/pgSQL�ؿ��Υ����ɤ�CREATE FUNCTION���ʸ�����ƥ��Ȥ��ƻ��ꤵ��ޤ��� ñ�������ǰϤ��̾�Τ������ʸ�����ƥ��򵭽Ҥ�������ؿ��������������Ƥ�ñ����������Ų����ʤ���Фʤ�ޤ��� Ʊ�ͤˡ����ƤΥХå�����å������Ų����ʤ���Фʤ�ޤ��� �ʤ���ʸ����Ȥ��ƥ��������פ��빽ʸ�����Ѥ����Ȳ��ꤷ�ޤ��� �������ñ�˽Ťͤ������ϺǤ��Ĺ�Ǥ��ꡢ��ñ�������Ǥ���Ȼפ��ޤ�����ʣ���ʾ��֤ǤϿ��İʾ�����ܤ��������䤬ɬ�פȤʤ뤿�ᡢ�����ɤ�Ψľ�ˤ����򤷤ˤ����ʤ�ޤ��� ��������äƿ侩�����Τϡ��ؿ����Τ�"�ɥ������"��ʸ�����ƥ��Ȥ��Ƶ��Ҥ��뤳�ȤǤ���項4.1.2.2�򸫤Ƥ��������ˡ� �ɥ��������Ѥ��������Ǥ�¾�ΰ��������Ų�����ɬ�פϤ���ޤ��󤬡����줾�������Ҥˤʤä����ؤ��Ȥ˰ۤʤä��ɥ������ˤ����ڤ������Ѥ��ʤ���Фʤ�ޤ��� �㤨�С�CREATE FUNCTION���ޥ�ɤ�ʲ��Τ褦�˵��Ҥ��Ƥ⹽���ޤ���

CREATE OR REPLACE FUNCTION testfunc(integer) RETURNS integer AS $PROC$
          ....
$PROC$ LANGUAGE plpgsql;

���Τ�����Ǥϡ�SQL���ޥ�ɤ����ñ��ʥ�ƥ��ʸ������Ф��ư��������ѤǤ���ʸ����Ȥ��ƽ��Ѥ���SQL���ޥ�ɤ����Ҥ���ڤ뤿���$$����ѤǤ��ޤ����⤷$$��ޤ���ƥ����Ȥ������ǰϤ���ϡ�$Q$�Τ褦�ʵ��Ҥ���ѤǤ��ޤ���

�ʲ���ɽ�ϥɥ��������Ѥ��ʤ����ΰ�����ε���ˡ�򼨤�����ΤǤ��� �ɥ��������Ѥ�������ˤ����������ε��Ҥ����򤹤�Τˡ�����ɽ����Ω�ĤȻפ��ޤ���

1�Ĥΰ�����

�ؿ����Τ���Ƭ�������� �ʲ�����򼨤��ޤ���

CREATE FUNCTION foo() RETURNS integer AS '
          ....
' LANGUAGE plpgsql;

�ؿ����������Ǥϡ��������ɬ���ڥ��Ǹ���ޤ���

2�Ĥΰ�����

�ؿ�����������ʸ�����ƥ���ѡ� �ʲ�����򼨤��ޤ���

a_output := ''Blah'';
SELECT * FROM users WHERE f_name=''foobar'';

�ɥ��������Ѥ�����ϡ����Τ褦�˵��Ҥ��ޤ���

a_output := 'Blah';
SELECT * FROM users WHERE f_name='foobar';

�ɤ���⡢PL/pgSQL�ѡ������鸫���Ʊ��Ȥʤ�ޤ���

4�Ĥΰ�����

�ؿ�����������ʸ�����ƥ�����ñ������䤬�����硣 �ʲ�����򼨤��ޤ���

a_output := a_output || '' AND name LIKE ''''foobar'''' AND xyz''

�ºݤ�a_output���ɲä�����ͤϡ� AND name LIKE 'foobar' AND xyz�Ǥ���

�ɥ��������Ѥ�����ϡ����Τ褦�˵��Ҥ��ޤ���

a_output := a_output || $$ AND name LIKE 'foobar' AND xyz$$

�ʤ����ɥ������ζ��ڤ�ʸ����$$�����Ȥϸ¤�ʤ����Ȥ����դ��Ƥ���������

6�Ĥΰ�����

�ؿ�����������ʸ�������ñ������䤬��ʸ��������������ˤ����硣 �ʲ�����򼨤��ޤ���

a_output := a_output || '' AND name LIKE ''''foobar''''''

�ºݤ�a_output���ɲä�����ͤϡ� AND name LIKE 'foobar'�Ǥ���

�ɥ��������Ѥ�����ϡ����Τ褦�ˤʤ�ޤ���

a_output := a_output || $$ AND name LIKE 'foobar'$$

10�Ĥΰ�����

ʸ���������� 2�Ĥ�ñ��������������������ʤ����8�Ĥ�ñ�������ˤʤ�ˡ����ġ�����ʸ��������������ˤ�����ʤ����2���ɲä���ޤ��ˡ� �����餯��¾�δؿ�����������ؿ�������������例38-6�ˤΤߤˤ��줬ɬ�פˤʤ�Ǥ��礦�� �ʲ�����򼨤��ޤ���

a_output := a_output || '' if v_'' || 
    referrer_keys.kind || '' like '''''''''' 
    || referrer_keys.key_string || '''''''''' 
    then return ''''''  || referrer_keys.referrer_type 
    || ''''''; end if;''; 

a_output���ͤϰʲ��Τ褦�ˤʤ�ޤ���

if v_... like ''...'' then return ''...''; end if;

�ɥ��������Ѥ�����ϡ����Τ褦�ˤʤ�ޤ���

a_output := a_output || $$ if v_$$ || referrer_keys.kind || $$ like '$$
    || referrer_keys.key_string || $$'
    then return '$$  || referrer_keys.referrer_type 
    || $$'; end if;$$; 

������ñ�������ϻ������˺�ɾ������뤿�ᡢa_output����������ɬ�פǤ���Ȳ��ꤷ�ޤ���