43.2. PL/Python ����

PL/Python�еĺ���ͨ���׼��CREATE FUNCTION�﷨������

CREATE FUNCTION funcname (argument-list)
  RETURNS return-type
AS $$
  # PL/Python function body
$$ LANGUAGE plpythonu;

��������һ���򵥵�Python�ű�����������õ�ʱ����IJ�����Ϊ�б�args ��Ԫ�ش��ݣ��������Ҳ�ᱻ������ͨ�ı������ݵ�Python�ű��С���������ʹ��ͨ�����׶��� ���ʹ��return��yield�������������� �ճ���Python�����з��ء����û���ṩ����ֵ��Python����ȱʡ��None�� PL/Python����Python��NoneΪSQL��ֵ��

���磬�������������нϴ��ߵĺ�����Զ���Ϊ��

CREATE FUNCTION pymax (a integer, b integer)
  RETURNS integer
AS $$
  if a > b:
    return a
  return b
$$ LANGUAGE plpythonu;

�Ժ����嶨����ʽ�����Python����ת����Python������磬�����ת���ɣ�

def __plpython_procedure_pymax_23456():
  if a > b:
    return a
  return b

�������23456��PostgreSQL������������OID��

��������Ϊȫ�ֱ�������ΪPython���������������Щ΢��Ľ�� ��������ں����ڲ����ܷ������������ı��ʽֵ�� ��DZ����ڿ������¶���Ϊȫ�֡����磬�������в�ͨ�ģ�

CREATE FUNCTION pystrip(x text)
  RETURNS text
AS $$
  x = x.strip()  # error
  return x
$$ LANGUAGE plpythonu;

��Ϊ���䵽��x���������ľֲ�����x�� ����x�ڷ�����Ҳ�ָ��һ��δ������ľֲ�����x�� ����PL/Python�������ʹ��global�����������ʹ�����У�

CREATE FUNCTION pystrip(x text)
  RETURNS text
AS $$
  global x
  x = x.strip()  # ok now
  return x
$$ LANGUAGE plpythonu;

����ò�Ҫ����PL/Python��ִ��ϸ�ڡ�����ǰѺ��������Ϊֻ���ġ�