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

Chapter 23. PL/pgSQL - SQL ��³������

Table of Contents
23.1. ����
23.1.1. PL/pgSQL ����Ѥ��뤳�Ȥ�����
23.1.2. PL/pgSQL �γ�ȯ
23.2. PL/pgSQL ��
23.3. ���
23.3.1. �ؿ���������̾
23.3.2. �Է�
23.3.3. �쥳����
23.3.4. °��
23.3.5. RENAME
23.4. ��
23.5. ����Ū��ʸ
23.5.1. ����
23.5.2. SELECT INTO
23.5.3. �����⤷���ϡ���̤�����ʤ��䤤��碌�μ¹�
23.5.4. ưŪ�䤤��碌�μ¹�
23.5.5. ��̥��ơ������μ���
23.6. ���湽¤
23.6.1. �ؿ����������
23.6.2. ���ʬ��
23.6.3. ñ��ʥ롼��
23.6.4. �䤤��碌��̤η��֤�
23.7. ��������
23.7.1. ���������ѿ������
23.7.2. ��������򳫤�
23.7.3. ����������
23.8. ���顼�ȥ�å�����
23.9. �ȥꥬ�ץ���������
23.10. ��
23.11. Oracle PL/SQL ����ΰܿ�
23.11.1. ��ʰ㤤
23.11.2. �ؿ��ΰܿ�
23.11.3. �ץ���������
23.11.4. �ѥå�����
23.11.5. ���դ��٤�����¾�λ���
23.11.6. ��Ͽ

PL/pgSQL �ϡ� PostgreSQL�ǡ����١��������ƥ��Ѥ��ɤ߹��߲�ǽ�ʼ�³������Ǥ���

���Υѥå������� Jan Wieck ��ˤ�äƽ񤫤줿��Τ򸵤ˤ��Ƥ��ޤ������Υɥ�����Ȥΰ�����Roberto Mello ��()�ˤ�äƽ񤫤�ޤ�����

23.1. ����

PL/pgSQL ���߷���Ū�ϡ����Τ褦���ɤ߹��߲�ǽ�ʼ�³������Ǥ�����

PL/pgSQL �ƤӽФ��ϥ�ɥ�ϴؿ��Υ������ƥ����Ȥ���Ϥ������Ƥ��δؿ���(���餫�ΥХå�����ɥץ����������)�ƤӽФ��줿���˥Х��ʥ������̿��ĥ꡼�������Ǻ������ޤ�������̿��ĥ꡼�ϴ����� PL/pgSQL ʸ��¤���Ѵ�����ޤ������ؿ������θġ��� SQL ���� SQL �䤤��碌��¨�¤��Ѵ�����ޤ���

�Ƽ���SQL �䤤��碌�����Ƥ��δؿ��ǻ��Ѥ������ˡ�PL/pgSQL ���󥿥ץ꥿��(SPI �ޥ͡������SPI_prepare�� SPI_saveplan �ؿ�����Ѥ���)�¹Էײ�ν�����Ԥ��ޤ������μ����䤤��碌�����˹Ԥ�����ˤϡ����ν������줿�ײ������Ѥ��ޤ����������ơ��¹Էײ褬ɬ�פȤ�����䤤��碌��¿�����ġ�����դ������ɤ���Ĵؿ��Ǥϡ����Υǡ����١�����³��ͭ���ʴּºݤ˻��Ѥ��줿��ʬ�ˤĤ��ƤΤߡ��ײ�ν�������¸���Ԥ��ޤ�������ˤ�꤫�ʤꡢ���Ϥˤ������Ȥ����󤬤Ǥ��ޤ�������������μ����䤤��碌�Υ��顼�����ؿ��γ�����ʬ���¹Ԥ����ޤǸ��Ф���ʤ����ȤǤ���

�ؿ����������䤤��碌�Ѥ� PL/pgSQL ���䤤��碌�ײ���������ȡ����Υǡ����١�����³��ͭ���ʴ֡����ηײ�Ϻ����Ѥ���ޤ����̾盧��ˤ����ǽ�ϸ��夷�ޤ�����������ưŪ�˥ǡ����١����������ޤ��ѹ�����������꤬�����Ĥ�ȯ�����ޤ����ʲ�����򼨤��ޤ���

CREATE FUNCTION populate() RETURNS INTEGER AS '
DECLARE
    -- ���
BEGIN
    PERFORM my_function();
END;
' LANGUAGE 'plpgsql';

��δؿ���¹Ԥ���ȡ�PERFORM ʸ�Ѥ��������줿�䤤��碌�ײ�Ǥϡ� my_function() �� OID �򻲾Ȥ��ޤ�����ˡ� my_function() ���������ƺ�������ȡ� populate() ��my_function() �򸫤Ĥ��뤳�Ȥ��Ǥ��ʤ��ʤ�ޤ������ξ�硢�����˥���ѥ��뤵���褦�� populate()��ƺ������ޤ��ϡ����ʤ��Ȥ�ǡ����١������å����򿷤�����ư���ʤ���Фʤ�ޤ���

���Τ褦�� PL/pgSQL �ϼ¹Էײ����¸���ޤ��Τǡ�PL/pgSQL �ؿ����ľ�ܸ�����䤤��碌�ϼ¹Ԥ��٤�Ʊ���ơ��֥�ȥե�����ɤ򻲾Ȥ��ʤ���Фʤ�ޤ��󡣤Ĥޤꡢ�䤤��碌�ˤơ��ơ��֥��ե�����ɤ�̾���Ȥ��ƥѥ�᡼������Ѥ��뤳�Ȥ��Ǥ��ޤ��󡣼¹Ԥ��٤˿������䤤��碌�ײ���������̵�̤�и�� PL/pgSQL�� EXECUTE ʸ��Ȥä�ưŪ�䤤��碌�������뤳�Ȥǡ��������¤����Ǥ��ޤ���

�桼��������Ѥ��������Ѵ��ȷ׻��ؿ��������C����ؿ�������Ǥ�����Ϥ��٤� PL/pgSQL �Ǥ�¸��Ǥ��ޤ���ʣ���ʾ��Τ���黻�����ؿ��κ��������������ؿ���Ȥä��黻�Ҥ�������ؿ�����ǥå����˺��������ؿ�����Ѥ��뤳�Ȥ���ǽ�Ǥ���

23.1.1. PL/pgSQL ����Ѥ��뤳�Ȥ�����

23.1.1.1. ���褤�ѥե����ޥ�

SQL�� PostgreSQL(�Ȥ���¾�Τ����Ƥ��Υ�졼����ʥ�ǡ����١���)���䤤��碌����Ȥ��ƻ��Ѥ��Ƥ������Ǥ��������������ꡢ�������ưפǤ����������������� SQL ʸ�ϡ��ǡ����١��������Фˤ�äƸġ��˼¹Ԥ���ʤ���Ф����ޤ���

����ϥ��饤����ȥ��ץꥱ���������Ф��ưʲ��Τ褦�ʤ��Ȥ��׵ᤷ�Ƥ��ޤ����ޤ����ǡ����١��������Ф��䤤��碌���������ޤ������ˤ��줬���������Τ��Ԥ��ޤ������ˡ���̤�������ޤ������˼㴳�η׻���Ԥ��ޤ��������ơ������Ф˼����䤤��碌���������ޤ������饤����Ȥ��ǡ����١��������Хޥ��󤫤�ߤưۤʤ�ޥ���ξ�硢�����ץ������̿��򾷤����ͥåȥ���������С��إåɤ򵯤������⤷��ޤ���

PL/pgSQL ��Ȥ����Ȥǡ��׻���ʣ�����䤤��碌��ǡ����١��������� �����ˤҤȤޤȤ�˼¹Ԥ��뤳�Ȥ��Ǥ��ޤ������Τ褦�ˡ���³������ΰ��Ϥ� SQL �λȤ��䤹���������碌�Ƥ���ˤ⤫����餺�����٤Ƥˤ����ƥ��饤�����/�������̿��Υ����С��إåɤ��ʤ��ΤǤ����ֻ��֤�����Ǥ��ޤ�������ˤ�꤫�ʤ���ǽ����夵���뤳�Ȥ��Ǥ��ޤ���

23.1.1.2. SQL �Υ��ݡ���

PL/pgSQL �ϼ�³�������ǽ�Ϥ� SQL �ν�������ʿ�����˲ä�����ΤǤ��� PL/pgSQL �Ǥϡ��ǡ��������󡢱黻�ҡ�SQL �ؿ������ƻ��Ѥ��뤳�Ȥ��Ǥ��ޤ���

23.1.1.3. �ܿ���

PL/pgSQL �ؿ��� PostgreSQL ��Ǽ¹Ԥ���ޤ��Τǡ������δؿ��� PostgreSQL ����Ư�������ƤΥץ�åȥե�����Ǽ¹Ԥ��뤳�Ȥ��Ǥ��ޤ������Τ褦�˥����ɤ�����ѤǤ��ޤ��Τǡ���ȯ���Ѥ��㸺�Ǥ��ޤ���

23.1.2. PL/pgSQL �γ�ȯ

�ä�Oracle �� PL/SQL �Τ褦��¾�Υǡ����١����μ�³������dz�ȯ�������Ȥ�����ʤ�С� PL/pgSQL �ˤ����볫ȯ�ϤȤƤ�����䤹���Ǥ��礦��PL/pgSQL �dz�ȯ����2�Ĥ��ɤ���ˡ��Ҳ𤷤ޤ���

  • �ƥ����ȥ��ǥ�����psql��Ȥäƥե��������ɤ߹��ߤ�����ˡ����Ѥ��뤳��

  • PostgreSQL�� GUI �ġ���Ǥ��� PgAccess ��Ȥ�����

PL/pgSQL�dz�ȯ�����Ĥ��ɤ���ˡ�ϡ�ñ��˴ؿ����������Τ˼�ʬ�ι����ʥƥ����ȥ��ǥ�����Ȥ����⤦��ĤΥ��󥽡���ǡ� psql(PostgreSQL���ü���˥�)����Ѥ��ƴؿ����ɤ߹��ޤ��뤳�ȤǤ���������ˡ�ǹԤ����ˤ� CREATE OR REPLACE FUNCTION ����Ѥ��ƴؿ���������������褤�Ǥ��礦��������ˡ�ˤ��ե��������ɤ߹��ߤ��뤳�Ȥǡ��ؿ�����򹹿����뤳�Ȥ��Ǥ��ޤ����ʲ�����򼨤��ޤ���

CREATE OR REPLACE FUNCTION testfunc(INTEGER) RETURNS INTEGER AS '
    ....
end;
' LANGUAGE 'plpgsql';

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

    \i filename.sql

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

PL/pgSQL �ˤ����볫ȯ�Τ⤦��Ĥ��ɤ���ˡ�ϡ� PostgreSQL�� GUI �ġ���Ǥ��� PgAccess ��Ȥ���ˡ�Ǥ�����������Ѥ���ȡ�ñ�������򥨥������פ������ꡢ�ؿ��κ��ľ����ǥХå����ưפ˹Ԥ���Ȥ����ɤ���������ޤ���