Chapter 34. ��������

PostgreSQL �����û�����ĺ���ʹ�� SQL �� C ֮������Ա�д�� ͨ����Щ��������Խ���������(PL)�� ���������һ�ֹ���������д��һ�������� ��ô���ݿ��������û���κ��ڽ���֪ʶ��֪��ν����ú�����Դ�ı��ġ� ʵ������Щ���񶼴��ݸ�һ��֪����δ�����Щϸ�ڵľ������ �������ȿ����Լ������еķ������﷨������ִ�еȵĹ�����Ҳ���Գ䵱PostgreSQL ��һ�����еı������ʵ��֮���"��ˮ"�����������һ�� C ���Ժ����� ���������һ�ֹ������������Ҫ��ʱ��װ�أ��������� C ����һ����

Ŀǰ�ڱ�׼�� PostgreSQL �����������ֹ������Կ��ã� PL/pgSQL��Chapter 35���� PL/Tcl��Chapter 36���� PL/Perl��Chapter 37������ PL/Python��Chapter 38���� �û����Զ����������ԡ�����һ���µĹ������ԵĻ�����Ϣ�� Chapter 45 ����ܡ�

���м��ֶ���Ĺ�������û�а����ں��ķ����Appendix H ����������ҵ����ǵ���Ϣ��

34.1. ��װ��������

�����Ҫʹ��ij�ֹ������ԣ���ô��������"��װ"��Ҫ���������ݿ�� ������Щ��װ�����ݿ� template1 ��Ĺ������Ի��Զ�����󴴽������ݿ��а�װ�� ������ݿ����Ա���Ծ����ĸ����ݿ����ʹ���������ԣ��Լ����Ծ���ȱʡʱ����ʹ����Щ���ԡ�

������Щ���ű�׼�汾���������ԣ������ʹ�� createlang ��������װ���Զ������Լ����޾�ϸ���Լ����� ���磬Ҫ��װPL/pgSQL�� template1 ���ݿ��У�ʹ��

createlang plpgsql template1

�����������ֹ���װ�ķ���ֻ����������Щ createlang ����֪���Ŀͻ����ԡ�

�ֹ��Ĺ������԰�װ

һ�����������ǰ��ĸ����谲װ�����ݿ�����ȥ�ģ� ��Щ������������ݿⳬ���û�ִ�С� createlang ����ѳ��� step 1 ֮��Ķ��Զ����ˡ�

  1. ���DZ��뱻����Ͱ�װ�����Ծ���Ĺ������Ŀ�꣩���밲װ��һ�����ʵĿ�Ŀ¼�� �����õķ�����������װ�û������ C �����ķ�����һ���ġ��� Section 31.9.6�� ͨ�������Ծ����Ҫ�ⲿ�Ŀ��ṩʵ�ʵı���������棻�������������ô��Щ��Ҳ���밲װ��

  2. ���Ծ�������ṩһ��"��֤��"���������������麯�������Ƿ���ȷ�� ������ʵ��ִ���������������֤����������ô�� CREATE FUNCTION ���á� ���һ����֤�������ɾ���ṩ����ô���������������

    CREATE FUNCTION validator_function_name(oid)
        RETURNS void
        AS 'path-to-shared-object'
        LANGUAGE C;

  3. PL ���������������

    CREATE [TRUSTED] [PROCEDURAL] LANGUAGE 'language-name'
        HANDLER handler_function_name
        [VALIDATOR validator_function_name] ;

    ��ѡ�Ĺؼ��� TRUSTED ����һ��û�г����û�Ȩ�޵���ͨ���ݿ��û��ܷ�ʹ���������Դ��������ʹ��������̡� ��Ϊ PL ���������ݿ����ڲ�ִ�У� ����TRUSTED��־Ӧ��ֻ��������Щ������������ݿ�������ڲ����ļ�ϵͳ�����ԡ� ����PL/pgSQL��PL/Tcl�� PL/Perl�Լ� PL/Python������Ϊ�ǿ��ŵġ� PL/TclU��PL/PerlU���� PL/PythonU ����Ƴ��ṩ���޵Ĺ��ܵأ������Ӧ�ñ��Ϊ���ŵġ�

Example 34-1 ��ʾ���ֹ�������ΰ�װ PL/pgSQL ���ԡ�

Example 34-1. �ֹ���װ PL/pgSQL

���������������ݿ⵽��������ҵ����� PL/pgSQL���Եĵ��þ�������Ĺ������Ŀ�꣩��

CREATE FUNCTION plpgsql_call_handler () RETURNS language_handler AS
    '$libdir/plpgsql' LANGUAGE C;

PL/pgSQL ��һ����֤���������������ǻ�Ҫ��������

CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS
    '$libdir/plpgsql' LANGUAGE C;

���������

CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
    HANDLER plpgsql_call_handler
    VALIDATOR plpgsql_validator;

������ǰ��������ĺ���Ӧ��Ϊ��Щ�������������� plpgsql �ĺ����򴥷������̱����õ�ʱ��ʹ�á�

��ȱʡ�� PostgreSQL ��װ�PL/pgSQL ���Եľ������������װ�� "library" Ŀ¼��ȥ�ġ���������� Tcl ֧�֣���ô PL/Tcl �� PL/TclU �ľ��Ҳ����������װ��ͬһ�� δ֪�����ƵĻ��У���������� Perl����ôPL/Perl �� PL/PerlU �������õ������Ͱ�װ�� ��������� Python����������װ PL/PythonU��