38.3. ���ݿ����

PL/Python ����ģ���Զ�����һ���� plpy �� Python ģ�顣�����ģ����ĺ����ͳ������������ Python �������� plpy.foo �����ֻ�á� Ŀǰ��plpy ʵ���˺��� plpy.debug(msg)�� plpy.log(msg)�� plpy.info(msg)�� plpy.notice(msg)�� plpy.warning(msg)�� plpy.error(msg)���� plpy.fatal(msg)�� plpy.error �� plpy.fatal ʵ�����׳�һ�� Python ���⣬�����û�в���������⣬�ᴫ�������õIJ�ѯ�� ���µ�ǰ��������������˳��� raise plpy.ERROR(msg) �� raise plpy.FATAL(msg) �ֱ��Ч�ڵ��� plpy.error �� plpy.fatal�� ��������ֻ���ɲ�ͬ���ȼ�����Ϣ���ض����ȼ�����Ϣ�ǻ㱨���ͻ��ˣ� д����������־���������¶��������� log_min_messages �� client_min_messages ���ò������Ƶġ� ���� Section 16.4 ��ȡ������Ϣ��

���⣬plpy ģ���ṩ������������ execute �� prepare�� ��һ����ѯ�ִ���һ����ѡ�����Ʋ������� plpy.execute �������иò�ѯ�����ҽ�����ص�һ���������� ����������һ���б����һ���ֵ���� ����������ͨ���кź��ֶ��������ʡ�����������Щ����ķ����� nrows() ���ظò�ѯ���ص������� �� status �� SPI_execute() �ķ��ر��������������ܱ��޸ġ�

���磺

rv = plpy.execute("SELECT * FROM my_table", 5)

��������my_table����� 5 �С����my_table��һ��my_column�ֶΣ� ��ô�����������ķ���������

foo = rv[i]["my_column"]

�ڶ���������plpy.prepare��Ϊһ����ѯ׼����ѯ�滮�� ���Ǵ�һ����ѯ�ִ���һ�����������б�������ڸò�ѯ�������ñ��������õģ� ���磺

plan = plpy.prepare("SELECT last_name FROM my_users WHERE first_name = $1", [ "text" ])

text���㽫��Ϊ$1���ݵı��������͡� ��׼��һ�����֮�����ú��� plpy.execute ��������

rv = plpy.execute(plan, [ "name" ], 5)

���������������ƣ��ǿ�ѡ�ġ�

������ PL/Python ģ��׼��һ���ƻ���ʱ�򣬸üƻ����Զ�����ġ� ���Ķ� SPI �ĵ���Chapter 39����ȡ��仰�ĺ��塣 Ϊ���ܿ纯��������Ч��ʹ������ص㣬������Ҫʹ�����ô洢�ֵ� SD �� GD ֮һ�������� Section 38.1�������磺

CREATE FUNCTION usesavedplan ( ) RETURNS trigger AS $$
   if SD.has_key("plan"):
      plan = SD["plan"]
   else:
      plan = plpy.prepare("SELECT 1")
      SD["plan"] = plan
   # rest of function
$$ LANGUAGE plpython;