| PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 36. PL/Tcl - Tcl �������� | Fast Forward | Next | 
Ҫ��PL/Tcl���Դ���һ��������ʹ�ñ������
CREATE FUNCTION funcname (argument-types) RETURNS return-type AS $$
    # PL/Tcl ������
$$ LANGUAGE pltcl;PL/TclU��һ���ģ���������Ӧ������Ϊ pltclu ֮�⡣
���������һ�� Tcl ���롣 ����һ����ѯ���������������� ��������Ϊ���� $1 ... $n ���ݸ� Tcl �ű��ġ� �������ͨ���ķ����� Tcl �����з��صģ�������һ�� return ��䡣
���磬 һ���ķ�����������ֵ�����ֵ���������������壺
CREATE FUNCTION tcl_max (integer, integer) RETURNS integer AS $$
    if {$1 > $2} {return $1}
    return $2
$$ LANGUAGE pltcl STRICT;��ע���Ӿ� STRICT���������ǿ��Բ��ÿ�������Ϊ NULL ������� ���������һ�� NULL���ú���ʵ���ϾͲ��ᱻ���ã� ��ֻ���Զ�����һ�� NULL �����
�����һ�����ϸ�ĺ��������һ��������ʵ����ֵ�� NULL�� ��ô��Ӧ�� $n ������������Ϊһ�����ִ��� Ҫ���һ���ض��IJ����Ƿ�Ϊ NULL������ʹ�ú��� argisnull�� ���磬��������Ҫ��tcl_max��һ������Ϊ null ������һ��Ϊ�� null ʱ���ط� null ������������ NULL��
CREATE FUNCTION tcl_max (integer, integer) RETURNS integer AS $$
    if {[argisnull 1]} {
	if {[argisnull 2]} { return_null }
	return $2
    }
    if {[argisnull 2]} { return $1 }
    if {$1 > $2} {return $1}
    return $2
$$ LANGUAGE pltcl;
����������Ҫ�� PL/Tcl �����з���һ�� NULL ��ֵ�� ����ִ�� return_null�����ܺ����Ƿ��ϸ����Ƕ�������ô����
�������͵IJ����ǵ��� Tcl ���鴫�ݸ����̵ġ� �����е�Ԫ�����־��Ǹ�����������������֡� �����ʵ�ʵ����е�һ�������� NULL ��ֵ����ô�������������г��֡� ������һ�����ӣ�
CREATE TABLE employee (
    name text,
    salary integer,
    age integer
);
CREATE FUNCTION overpaid_2 (EMP) RETURNS boolean AS $$
    if {200000.0 < $1(salary)} {
	return "t"
    }
    if {$1(age) < 30 && 100000.0 < $1(salary)} {
	return "t"
    }
    return "f"
$$ LANGUAGE pltcl;
Ŀǰû�з��ظ������ͽ��ֵ��֧�֡�Ҳ��֧�ַ��ؽ������
PL/Tcl Ŀǰ��������ȫ֧�������ͣ������������ͺ��²�ı���������һ���ġ� �����ζ�����������Լ�������ᱻǿ�ơ����ں����������ⲻ��ʲô���⣬ ���������� PL/Tcl ��������Ϊ����һ�������ͣ���ô����Σ�ա�