¾�ΥС�������ʸ�� �� 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

23.7. ��������

�䤤��碌���Τ���٤˼¹Ԥ���ΤǤϤʤ����������� �����ꤷ�ơ��䤤��碌�򥫥ץ��벽�����䤤��碌�η�̤���٤˿��ԤŤ��ɤߤȤ뤳�Ȥ��Ǥ��ޤ��������Ԥ���ͳ��1�Ĥϡ�������¿���ιԤ�������Υ���θϳ���ɤ����ȤǤ�(��������PL/pgSQL �桼�����̾盧����ۤ���ɬ�פϤ���ޤ���FOR �롼�פϼ�ưŪ�˥������������Ū�˻��Ѥ��ƥ����������ɤ�����Ǥ�)����궽̣������ǽ���ϡ��ؿ������ƤӽФ������Ԥ��ɤߤȤ뤳�Ȥ��Ǥ���褦�����ꤹ�륫������λ��Ȥ��֤����Ȥ��Ǥ��뤳�ȤǤ�������ϡ��ؿ�����Խ�����֤���ˡ��1�Ĥ��󶡤��ޤ���

23.7.1. ���������ѿ������

PL/pgSQL �ˤ��������ƤΥ�������ؤΥ��������ϥ��������ѿ����ͳ���ޤ������������ѿ��Ͼ���ü�� refcursor �ǡ������Ǥ������������ѿ����������1�Ĥ���ˡ�ϡ�ñ�� refcursor �����ѿ��Ȥ���������뤳�ȤǤ���¾����ˡ�ϡ��������������ʸ����Ѥ��뤳�ȤǤ�������ϰ���Ū�ˤϰʲ��Τ褦�ʤ�ΤǤ�(Oracle �Ȥθߴ����Τ��ᡢFOR �� IS ���֤������뤳�Ȥ��Ǥ��ޤ�)��

name CURSOR [ ( arguments ) ] FOR select_query ;

arguments �Ϥ⤷����С� name �� datatype ���Ȥ߹�碌�򥳥�ޤǶ��ڤä��ꥹ�Ȥǡ�Ϳ����줿�䤤��碌��Υѥ�᡼���ͤȤ����ִ������̾����������ޤ�������̾���˼ºݤ�����������ͤϡ���������򳫤�����������˻��ꤵ��ޤ���

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

DECLARE
    curs1 refcursor;
    curs2 CURSOR FOR SELECT * from tenk1;
    curs3 CURSOR (key int) IS SELECT * from tenk1 where unique1 = key;

�����3�Ĥ��ѿ��Ϥ��٤� refcursor �ǡ�����������ޤ������ǽ�Τ�Τ����Ƥ��䤤��碌�˻��ѤǤ���2���ܤϴ������䤤��碌������ �Х���ɤ����(��ӤĤ�����) ���ޤ����ޤ����Ǹ�Τ�Τϡ��ѥ�᡼���դ����䤤��碌����ӤĤ����Ƥ��ޤ�(key �ϥ������뤬���������������ѥ�᡼���ͤ��֤��������ޤ�)�� curs1 �ѿ��ϡ�������䤤��碌�˷�ӤĤ����Ƥ��ޤ���Τǡ�����Х�����Ǥ���ȸƤФ�ޤ���

23.7.2. ��������򳫤�

�����������Ѥ��ƹԤ���Ф����ˡ��������ɬ�פ�����ޤ�(����� DECLARE CURSOR SQL���ޥ�ɤ�ư���Ʊ���Ǥ�)��PL/pgSQL �ˤ� 4 ����� OPEN ʸ�����ꡢ��2�Ĥϥ���Х���ɥ��������ѿ�����ѡ��Ĥ�2�ĤϥХ���ɥ��������ѿ�����Ѥ��뤿��Τ�ΤǤ���

23.7.2.1. OPEN FOR SELECT

OPEN unbound-cursor FOR SELECT ...;

���������ѿ��ϳ����졢�¹Ԥ���褦���ꤷ���䤤��碌����Ϳ����ޤ������˳�������������򳫤����ȤϤǤ������ޤ�������Х���ɥ�������Ȥ���(�Ĥޤꡢñ�ʤ� refcursor �ѿ��Ȥ���)�������Ƥ��ʤ���Фʤ�ޤ���SELECT �䤤��碌�ϡ�¾�� PL/pgSQL �� SELECT ��Ʊ�ͤ���ˡ�ǰ����ޤ���PL/pgSQL ���ѿ�̾���֤�������졢�䤤��碌�ײ�Ϻ����ѤǤ���褦�˥���å��夵��ޤ���

OPEN curs1 FOR SELECT * FROM foo WHERE key = mykey;

23.7.2.2. OPEN FOR EXECUTE

OPEN unbound-cursor FOR EXECUTE query-string;

���������ѿ��ϳ����졢�¹Ԥ���褦���ꤷ���䤤��碌����Ϳ����ޤ������˳�������������򳫤����ȤϤǤ������ޤ�������Х���ɥ�������Ȥ���(�Ĥޤꡢñ�ʤ� refcursor �ѿ��Ȥ���)�������Ƥ��ʤ���Фʤ�ޤ����䤤��碌�ϡ�EXECUTE ���ޥ�ɤ�Ʊ����ˡ�ˤ��ʸ���󼰤Ȥ��ƻ��ꤵ��ޤ����̾����ϡ�����˼¹Ԥ����䤤��碌���Ѳ������䤤��碌��Ԥ����˽�������Ϳ���ޤ���

OPEN curs1 FOR EXECUTE ''SELECT * FROM '' || quote_ident($1);

23.7.2.3. �Х���ɥ��������OPEN

OPEN bound-cursor [ ( argument_values ) ];

��������䤤��碌����ӤĤ����륫�������ѿ��򳫤�����˻��Ѥ���� OPEN �η����Ǥ������˳�������������򳫤����ȤϤǤ��ޤ��󡣼°�����ɾ�����ϥ������뤬������Ȥ��Τ�������줿���ˤΤ߸���ޤ��������ͤ��䤤��碌������֤��������ޤ����Х���ɥ���������䤤��碌�ײ�Ͼ�˥���å����ǽ�Ȥߤʤ���ޤ������ξ��������� EXECUTE �Ϥ���ޤ���

OPEN curs2;
OPEN curs3(42);

23.7.3. ����������

��������򳫤��Ƥ��顢��������������ʸ����Ѥ��ƥ�������򰷤����Ȥ��Ǥ��ޤ���

���������ϡ���������򳫻Ϥ��뤿��˳��������δؿ���ǹԤ�ɬ�פϤ���ޤ��󡣴ؿ����� refcursor �ͤ��֤����ƤӽФ����Ǥ��Υ�����������򤵤��뤳�Ȥ�Ǥ��ޤ�(����Ū�ˤ�refcursor�ͤϡ���������ؤ�ͭ�����䤤��碌����ĥݡ�����(����)��̾���򼨤�ñ�ʤ�ʸ����Ǥ�������̾���ϡ��ݡ������������Ȥʤ���¾��refcursor�����ѿ����������뤳�Ȥǡ�¾���Ϥ����Ȥ��Ǥ��ޤ�)��

���ƤΥݡ�����ϰ���Ū�˥ȥ�󥶥������ν�����Ĥ�����ޤ������äơ�refcursor �ͤϤ��Υȥ�󥶥������ν���ޤǤδ֤Τ߳�������������ؤλ��ȤȤ���ͭ���Ǥ���

23.7.3.1. FETCH

FETCH cursor INTO target;

FETCH �ϥ������뤫�鼡�ιԤ���Ф���SELECT INTO �Τ褦���оݤ˳�Ǽ���ޤ����оݤȤϡ����ѿ����ޤ��ϥ쥳�����ѿ������뤤�ϡ�ñ����ѿ��򥳥�ޤǶ��ڤä��ꥹ�ȤǤ���SELECT INTO �ξ���Ʊ�͡��ü�� FOUND �ѿ��򸡺����뤳�Ȥǡ��Ԥ�����Ǥ������ɤ������ǧ���뤳�Ȥ��Ǥ��ޤ���

FETCH curs1 INTO rowvar;
FETCH curs2 INTO foo,bar,baz;

23.7.3.2. CLOSE

CLOSE cursor;

CLOSE �ϥݡ�������ظ�Υ���������Ĥ��ޤ����������Ѥ��ƥȥ�󥶥������ν���������˥꥽������������뤳�Ȥ��Ǥ����ޤ������������ѿ�������������ٳ������Ȥ��Ǥ��ޤ���

CLOSE curs1;