¾�ΥС�������ʸ�� �� 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 21. PL/Perl - Perl ��³������

Table of Contents
21.1. PL/Perl �ؿ��Ȱ���
21.2. PL/Perl �ˤ�����ǡ�����
21.3. PL/Perl����Υǡ����١�����������
21.4. ���ꤵ�줿 PL/Per ����ӿ��ꤵ��ʤ� PL/Perl
21.5. ¸�ߤ��ʤ���ǽ

PL/Perl �� Perl �ץ�����ߥ󥰸������Ѥ��� PostgreSQL �ؿ���������뤳�Ȥ��Ǥ��롢�ɤ߹��߲�ǽ�ʼ�³������Ǥ���

PL/Perl ������Υǡ����١����˥��󥹥ȡ��뤹��ˤϡ�createlang plperl dbname ����Ѥ��ޤ���

Tip: ����� template1 �˥��󥹥ȡ��뤹��ȡ����θ�˺��������ǡ����١������Ƥˡ����θ���ϼ�ưŪ�˥��󥹥ȡ��뤵��ޤ���

Note: �������ѥå���������Ѥ���桼���ϡ����󥹥ȡ���ץ������δ� PL/Perl �Υӥ�ɤ��ä˻��Ѳ�ǽ�ˤ��Ƥ���ɬ�פ�����ޤ� (�ܺ٤ˤĤ��Ƥϡ����󥹥ȡ�����򻲾Ȥ��Ƥ�������)���Х��ʥ�ѥå���������Ѥ�����ϡ��̸ĤΥ��֥ѥå������� PL/Perl �����äƤ����ǽ��������ޤ���

21.1. PL/Perl �ؿ��Ȱ���

PL/Perl ����Ǵؿ����������ˤϡ��ʲ���ɸ�๽ʸ����Ѥ��Ʋ�������

CREATE FUNCTION funcname (argument-types) RETURNS return-type AS '
    # PL/Perl function body
' LANGUAGE plperl;

�ؿ����Τ��̾�� Perl �Υ����ɤǤ���

�����ȷ�̤�¾�� Perl ���֥롼�����Ʊ�ͤ˰����ޤ��� ������ @_ ������Ϥ��졢����ͤ� return���ޤ��ϡ����δؿ��ǺǸ��ɾ�����줿���Ȥ����֤���ޤ����㤨�С�2�Ĥ����������礭�������֤��ؿ��ϰʲ��Τ褦������Ǥ��ޤ���

CREATE FUNCTION perl_max (integer, integer) RETURNS integer AS '
    if ($_[0] > $_[1]) { return $_[0]; }
    return $_[1];
' LANGUAGE plperl;

SQL �� NULL �ͤ��ؿ����Ϥ��줿��硢���ΰ����ͤ� Perl �ˤ����� "undefined" �Ȥ��Ƹ���ޤ��� ��δؿ�����Ǥϡ�NULL �����Ϥ��줿��礦�ޤ�ư��ʤ��Ǥ��礦 (�ºݤϤ��줬�����Ǥ��뤫�Τ褦��ư���Ǥ��礦)�� STRICT ��ؿ�����˲ä��뤳�Ȥǡ�PostgreSQL ��ư��������Ū�ˤ��뤳�Ȥ��Ǥ��ޤ��� NULL �ͤ��Ϥ��줿��硢�ؿ��Ϥޤä����ƤӽФ��줺��ñ�� NULL �Ȥ�����̤���ưŪ���֤���ޤ���¾����ˡ�Ȥ��ơ��ؿ����Τ�̤��������Ϥ�����å����뤳�Ȥ�Ǥ��ޤ��� ���Ȥ��С�perl_max �ΰ����������� NULL���⤦�������� NULL �ξ��ˡ�NULL �ͤǤϤʤ��� NULL �ΰ������֤��褦�ˤ���Ȥ��ޤ���

CREATE FUNCTION perl_max (integer, integer) RETURNS integer AS '
    my ($a,$b) = @_;
    if (! defined $a) {
        if (! defined $b) { return undef; }
        return $b;
    }
    if (! defined $b) { return $a; }
    if ($a > $b) { return $a; }
    return $b;
' LANGUAGE plperl;

��Ǽ������̤ꡢPL/Perl �ؿ����� SQL �� NULL �ͤ��֤�����ˤϡ�̤����ͤ��֤��褦�ˤ��Ʋ�����������ϡ��ؿ�����̩���ɤ����˴ط��ʤ����¹Ԥ��뤳�Ȥ��Ǥ��ޤ���

ʣ�緿�ΰ����ϥϥå���ؤλ��ȤȤ��ƴؿ����Ϥ���ޤ����ϥå���Υ�����ʣ�緿��°��̾�Ǥ����ʲ�����򼨤��ޤ���

CREATE TABLE employee (
    name text,
    basesalary integer,
    bonus integer
);

CREATE FUNCTION empcomp(employee) RETURNS integer AS '
    my ($emp) = @_;
    return $emp->{''basesalary''} + $emp->{''bonus''};
' LANGUAGE plperl;

SELECT name, empcomp(employee) FROM employee;

���ΤȤ�����ʣ�緿�η���ͤ��֤���ǽ�ϥ��ݡ��Ȥ���Ƥ��ޤ���

Tip: �ؿ����Τϡ�CREATE FUNCTION ��SQL ʸ����ƥ��Ȥ����Ϥ���ޤ��Τǡ�Perl ���������ñ��������Хå�����å���򥨥������פ��ʤ���Фʤ�ޤ��� �̾�Ͼ����Τ褦�ˤ�������Ťˤ��ޤ��� ¾����ˡ�ϡ�Perl �γ�ĥ���ѱ黻�� (q[]��qq[]��qw[]) ����Ѥ��ơ�ñ����������Ѥ��ʤ��褦�ˤ��뤳�ȤǤ���