PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
CREATE [ OR REPLACE ] FUNCTION name ( [ [ argname ] argtype [, ...] ] ) RETURNS rettype { LANGUAGE langname | IMMUTABLE | STABLE | VOLATILE | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AS 'definition' | AS 'obj_file', 'link_symbol' } ... [ WITH ( attribute [, ...] ) ]
CREATE FUNCTION ����һ���µĺ����� CREATE OR REPLACE FUNCTION ��Ҫô����һ���º����� Ҫô�滻���еĶ��塣
���������һ��ģʽ������ô��������ָ����ģʽ�д��������������ڵ�ǰģʽ�д����� �º��������ֲ��ܺ�ͬһ��ģʽ�е��κδ���ͬ���������͵ĺ���ͬ���� �������������Ͳ�ͬ�ĺ�������ͬ�����������������
Ҫ����һ�����к����Ķ��壬ʹ�� CREATE OR REPLACE FUNCTION�� ���Dz��������������һ�����������ֻ��߲������ͣ��������ô�ɣ���ô��ͻᴴ��һ���µģ���ͬ�ĺ������� ͬ����CREATE OR REPLACE FUNCTION Ҳ������������һ�����к����ķ������͡� Ҫ����Щ���飬�����ɾ�������´���������
�����ɾ��Ȼ���ؽ�һ���������º����;ɵĽ��Dz�ͬ��ʵ�壻�����Ҫɾ�������������Ϻ����Ĺ�����ͼ���������ȵȡ� ʹ�� CREATE OR REPLACE FUNCTION �����ڲ��ƻ����øú����Ķ����ǰ�����ĺ������塣
��������������û���Ϊ�����������ߡ�
Ҫ�����ĺ������֣�������ģʽ���Σ���
һ�����������֡���Щ���ԣ�Ŀǰֻ�� PL/pgSQL���������ں�������ʹ�ò������֡� �����������ԣ������������ֻ�Ƕ�����ĵ���
�ú������������ͣ�������ģʽ���Σ��� ����еĻ����������Ϳ����ǻ������ͣ�Ҳ�����Ǹ������ͣ������ͣ����߿�������һ�������ֶ���ͬ�����͡�
����ʵ�����ԵIJ�ͬ�����ǻ����������������� "α����"�� ���� cstring��α���ͱ�ʾʵ�ʵIJ�������Ҫô��û��������������Ҫô������ͨ�� SQL ��������֮�⡣
һ���ֶε��������� tablename.columnname%TYPE ��ʾ�ģ�ʹ������������������������ڱ�����ġ�
�����������͡�������Ϳ�������Ϊһ���������ͣ��������ͣ������ͣ� ��������һ����������ֶΡ� ����ʵ�����ԵIJ�ͬ�����ǻ����������������� "α����"�� ���� cstring��
SETOF ���δʱ�ʾ�ú���������һ����Ŀ�� ������һ����Ŀ��
һ���ֶε�������ͨ��д tablename.columnname%TYPE �����õġ�
����ʵ�ֺ��������Ե����֡� ������ SQL��C�� internal���������û�����Ĺ����������֡� Ϊ�˱������¼��ݣ������ֿ����õ����Ű�Χ��
��Щ���Ը���ϵͳ�ѶԸú����Ķ�ε����滻��һ���Ƿ�ȫ�� ��Ҫ��������ʱ�Ż��� ����Ӧ������һ��ѡ������κ�һ����û�г��֣���ô VOLATILE ��ȱʡ���衣
IMMUTABLE ��ʾ�ú����ڸ���ͬ���IJ���ֵʱ���Ƿ�����ͬ�Ľ���� Ҳ����˵�����������ݿ���һ�����ʹ����Щ��û��ֱ�ӳ�����������б��������Ϣ�� ����������ѡ���ô�κδ���ȫ���dz��������Ըú����ĵ��ö��������滻Ϊ�ú�����ֵ��
STABLE ��ʾ��һ�α�ɨ�������ͬ����ֵ�� �ú������ȶ�������ͬ��ֵ���������Ľ�������ڲ�ͬ SQL ���֮��仯�� ���ѡ�����Щ����������ݿ���ң��������������統ǰʱ�������ȵȵĺ����Ǻܺ��ʵġ� ��Ҫע�� current_timestamp �庯���� stable (�ȶ�)�ģ���Ϊ���ǵ�ֵ��һ�������в���仯��
VOLATILE ��ʾ�ú���ֵ����������һ�α�ɨ���ڸı䣬 ��˲������κ��Ż����������ݿ⺯����������������ױ�ģ� һЩ������ random()��currval()�� timeofday()����ע���κ��и����õĺ�����������Ϊ�ױ��࣬ ��ʹ�����൱�й���ҲӦ���������������ܱ��������Ż���һ�����Ӿ��� setval()��
����ϸ�ڣ������ Section 31.6��
CALLED ON NULL INPUT ��ȱʡ�������ú������Լ���ijЩ�����ǿ�ֵ��ʱ���ǿ����������ķ�ʽ���á� ʣ�µ������Ǻ��������߱��븺�����ֵ�Լ���Ӧ��������Ӧ��
RETURNS NULL ON NULL INPUT �� STRICT ������������κβ����� NULL���˺������Ƿ��� NULL�� ��������������������������� NULL ����ʱ����ִ�иú����� ��ֻ���Զ�����һ�� NULL �����
SECURITY INVOKER �����ú��������ŵ��������û���Ȩ��ִ�С� ����ȱʡ��SECURITY DEFINER �����ú������Դ��������û���Ȩ��ִ�С�
�ؼ��� EXTERNAL ��Ŀ���Ǻ� SQL ���ݣ� �������Ǻ� SQL ��ͬ���ǣ�������Բ������������ⲿ�ĺ����� �������ǿ�ѡ�ġ�
һ�����庯�����ִ�����������ȡ�������ԡ���������һ���ڲ��������֣� һ��ָ��ij��Ŀ���ļ���·����һ�� SQL ��ѯ������һ���ù�������д���ı���
�����ʽ�� AS �Ӿ������ں����� C Դ�ļ���ĺ������ֺ� SQL ���������ֲ�ͬ��ʱ��ɶ�̬װ�� C ���Ժ����� �ִ� obj_file �ǰ����ɶ�̬װ�صĶ�����ļ������� link_symbol �Ǻ��������ӷ��ţ�Ҳ���Ǹú����� C Դ�ļ�������֡� ���ʡ�������ӷ��ţ���ô�ͼ������ͱ������ SQL ����ͬ����
��ʷ�����ĺ�����ѡ��Ϣ����������Կ����ڴ˳��֣�
���� STRICT ���� RETURNS NULL ON NULL INPUT
isCachable �� IMMUTABLE �Ĺ�ʱ�ĵ�Ч������������¼��ݣ�������Ȼ��������
�������Ǵ�Сд�صġ�
����� Section 31.3 ��ȡ���������д��������Ϣ��
���������㽫������ SQL �����������������ͷ���ֵ�� ��������Щ����������ϸ�ڣ����磬numeric ���͵ľ����������²㺯��ʵ�ָ���ģ� ���һᱻ CREATE FUNCTION �������ĵ��̵��� ��Ҳ����˵�����ٱ�ʶ���ǿ�ƣ���
PostgreSQL ������������ Ҳ����˵��ͬһ���������������ڼ�����ͬ�ĺ����� ֻҪ���ǵIJ��������������ǡ����������к����� C ���ֱ��벻ͬ�� Ҳ����˵�����������ص� C ������ͬ�� C ���֣����磬ʹ�ò���������Ϊ C ���ֵ�һ���֣���
����ظ����� CREATE FUNCTION�����Ҷ�ָ��ͬһ��Ŀ���ļ��� ��ô���ļ�ֻװ��һ�Ρ�Ҫж�غͻָ�װ�ظ��ļ����������ڿ��������У��������ʹ�� LOAD ���
ʹ�� DROP FUNCTION ɾ��һ���û����庯����
ͨ����˵��ʹ����Ԫ����Χ������ Section 4.1.2.2������д���������ִ��� ������ʹ����ͨ�ĵ����Ű�Χ��᷽��ܶࡣ�����ʹ����Ԫ����Χ�� ��ô������������κε����Ż�б�ܶ���������д˫�ݵķ������ݡ�
Ҫ�ܶ��庯�����û�����Ը������� USAGE Ȩ�ޡ�
������һ�������ӣ����ڰ����㿪ʼ���������� ������Ϣ�����ӣ����� Section 31.3��
CREATE FUNCTION add(integer, integer) RETURNS integer AS 'select $1 + $2;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;
�� PL/pgSQL ����һ�����������ò�������
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$ BEGIN RETURN i + 1; END; $$ LANGUAGE plpgsql;