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 ��������Ϊ����һ�������ͣ���ô����Σ�ա�