¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

22.3. �ǡ����١�����������

PL/Python ����⥸�塼��ϼ�ưŪ�� plpy Python �⥸�塼��򥤥�ݡ��Ȥ��ޤ������Υ⥸�塼��δؿ�������ϡ�plpy.foo �Τ褦�˺������� Python �����ɤ�����Ѥ��뤳�Ȥ��Ǥ��ޤ��� ���� plpy �Ǥϡ�plpy.debug("msg")��plpy.log("msg")��plpy.info("msg")��plpy.notice("msg")��plpy.warning("msg")��plpy.error("msg")������� plpy.fatal("msg") �ؿ���������Ƥ��ޤ��� �����ϡ�C �Υ����ɤ���� elog(LEVEL, "msg") �θƤӽФ��Ȥۤ�Ʊ���Ǥ��� plpy.error ����� plpy.fatal �ϡ��ºݤ� Python ���㳰��ȯ�������ޤ������줬 catch ����ʤ���硢PL/Python �⥸�塼��ϡ����δؿ��ϥ�ɥ餬 Python ���󥿥ץ꥿�����֤�ݤ� elog(ERROR, msg) ��ƤӽФ��ޤ��� Python ���󥿥ץ꥿����� long jump �ϡ������餯���ޤ깥�ޤ�������ޤ���raise plpy.ERROR("msg") ����� raise plpy.FATAL("msg") �ϡ����줾�� plpy.error ����� plpy.fatal �θƤӽФ���Ʊ���Ǥ���

���ˡ�plpy �⥸�塼��� execute ����� prepare �Ȥ���2�Ĥδؿ����Ѱդ��Ƥ��ޤ��� plpy.execute ���䤤��碌ʸ���󤪤�Ӿ�ά��ǽ�����°������դ��ƸƤӽФ��ȡ��䤤��碌���¹Ԥ��졢��̥��֥������ȤȤ����䤤��碌��̤��֤�ޤ������η�̥��֥������Ȥϥꥹ�Ȥ⤷���ϼ��񥪥֥������Ȥ��ϵ����ޤ��� ��̥��֥������Ȥϡ����ֹ��ե������̾�ˤ�äƥ����������뤳�Ȥ��Ǥ��ޤ��� ��̥��֥������Ȥˤϡ��䤤��碌��̤ιԿ����֤� nrows()��SPI_exec ���֤��ѿ��Ǥ��롢status�Ȥ����᥽�åɤ��ɲä���Ƥ��ޤ��� ��̥��֥������Ȥϡ��ѹ����뤳�Ȥ��Ǥ��ޤ���

�ʲ�����򼨤��ޤ���

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

����ϡ�my_table ���� 5 �ԤޤǤ��֤��ޤ��� my_table �� my_field ��¸�ߤ����硢������ˤϰʲ��Τ褦�˥��������Ǥ��ޤ���

foo = rv[i]["my_field"]

2 ���ܤδؿ� 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)

���°����� plpy.execute ��ƤӽФ����˾�ά���뤳�Ȥ��Ǥ��ޤ���

�����ǤǤϡ�PL/Python �ؿ��μ¹��桢�ǡ����١������顼��ȯ������ȡ������Фˤ�äƤ��δؿ���¨�¤˽�λ�������ޤ���Python �� try ... catch ��ʸ����Ѥ��Ƥ⡢���顼���� trap ���뤳�Ȥ��Բ�ǽ�Ǥ����㤨�С�plpy.execute() �ƤӽФ����Ϥ��줿 SQL ʸ�˹�ʸ���顼�����ä���硢���δؿ��Ͻ�λ���ޤ�������ư��ϡ������ѹ�����ͽ��Ǥ���

PL/Python �⥸�塼�����Ѥ��ƽ��������ײ�ϼ�ưŪ����¸����ޤ������줬�����̣����Τ��ˤĤ��Ƥ� SPI ��ʸ�� (Chapter 17) �򻲾Ȥ��Ʋ�������

�����ʣ���ƤӽФ��ˤ����Ƹ���Ū�˻��Ѥ��뤿��ˤϡ���³Ū�ʳ�Ǽ�Ѽ���Ǥ��� SD �ޤ��� GD (Section 22.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';