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

DECLARE

名前

DECLARE -- ����������������

概要

DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
    CURSOR [ { WITH | WITHOUT } HOLD ] FOR query

����

DECLARE��Ȥ��ȡ�������䤤��碌�η�̤�����٤˾����ιԤ���Ф���ǽ�Ǥ��륫�����뤬���ѤǤ���褦�ˤʤ�ޤ��� �����������������塢FETCH����Ѥ��ƹԤ���Ф��ޤ���

注意: ���Υޥ˥奢��ڡ����Ǥ�SQL���ޥ�ɥ�٥�ǤΥ�������λ�����ˡ�ˤĤ����������ޤ��� PL/pgSQL��ǥ����������Ѥ���Ĥ��Ǥ���С���§���ۤʤ�ޤ��Τǡ�項39.7�򻲾Ȥ��Ƥ���������

�ѥ�᡼��

name

��������륫�������̾���Ǥ���

BINARY

��������ˤ��ǡ����μ��������ƥ����ȷ����ǤϤʤ��Х��ʥ�����ˤʤ�ޤ���

INSENSITIVE

�������뤫����Ф��줿�ǡ�������������������������˹Ԥ�줿�ظ�ˤ���ơ��֥�ι����αƶ�������ʤ����Ȥ򼨤��ޤ��� �������������PostgreSQL�Υǥե���Ȥ�ư��Ǥ��� �������äơ����Υ�����ɤ���Ѥ��Ƥ���̤Ϥʤ������Υ�����ɤ�ɸ��SQL�Ȥθߴ������ݻ����뤿���¸�ߤ��Ƥ��ޤ���

SCROLL
NO SCROLL

SCROLL�ϡ����Υ������뤫���̾�ν���̤�Ǥʤ���ˡ�ǡ��㤨�и�������˹Ԥ���в�ǽ�Ǥ��뤳�Ȥ���ꤷ�ޤ��� �䤤��碌�μ¹Էײ褬ʣ���ˤʤ�ȡ�SCROLL�λ���ˤ�ä��䤤��碌�μ¹Ի��֤����礹���ǽ��������ޤ��� NO SCROLL�ϡ����Υ������뤫�����̤�Ǥʤ���ˡ�ǤϹԤ���Ф��ʤ����Ȥ���ꤷ�ޤ��� �ǥե���ȤǤϡ������Ĥ��ξ��ǥ����������ǽ�Ǥ��� �����SCROLL�λ����Ʊ���ǤϤ���ޤ��� �ܺ٤������򻲾Ȥ��Ƥ���������

WITH HOLD
WITHOUT HOLD

WITH HOLD�ϡ�������������������ȥ�󥶥����������˥��ߥåȽ�����Ԥä���⡢���Υ�������λ��Ѥ�³�����뤳�Ȥ���ꤷ�ޤ��� WITHOUT HOLD�ϡ�������������������ȥ�󥶥������γ����Ǥϡ����Υ����������ѤǤ��ʤ����Ȥ���ꤷ�ޤ��� WITH HOLD��WITHOUT HOLD����ꤵ��ʤ���硢WITHOUT HOLD���ǥե���ȤȤʤ�ޤ���

query

��������ˤ�ä��֤����Ԥ��󶡤���SELECT�ޤ���VALUES���ޥ�ɤǤ���

BINARY��INSENSITIVE��SCROLL������ɤ�Ǥ�դν��֤ǻ��ꤹ�뤳�Ȥ��Ǥ��ޤ���

����

�̾�Υ�������ϡ�SELECT�ν��Ϥ�Ʊ���ƥ����ȷ����ǥǡ������֤��ޤ��� BINARY�ϡ��������뤬�Х��ʥ�����ǥǡ������֤��ʤ���Фʤ�ʤ����Ȥ򼨤��ޤ��� ����ˤ�ꥵ���С����饤����Ȥ�ξ�����Ѵ��˴ؤ����Ȥ�ʤ����Ȥ��Ǥ��ޤ������ץ�åȥե�����˰�¸����Х��ʥ�ǡ����񼰤򰷤�����Υץ�����ޤκ�Ȥ��礭���ʤ�ޤ��� �㤨�С��䤤��碌���������󤫤��ͤȤ���1���֤���硢�ǥե���ȤΥ������뤫���1�Ȥ���ʸ�����������뤳�Ȥˤʤ�ޤ������Х��ʥ�����Υ������뤫��ϡ�����ɽ����Ȥä�4�Х��Ȥ��ͤ�������뤳�Ȥˤʤ�ޤ��ʥХ��ȥ������ϥӥå�����ǥ�����ˡ�

�Х��ʥ�����Υ�����������դ��ƻȤ�ʤ���Фʤ�ޤ��� psql�ʤɤ�¿���Υ��ץꥱ�������ϡ��ǡ����ϥƥ����ȷ������֤�����ΤȤߤʤ��Ƥ��ꡢ�Х��ʥ�����Υ�������򰷤����Ȥ��Ǥ��ޤ���

注意: ���饤����ȥ��ץꥱ�������"��ĥ�䤤��碌"�ץ��ȥ������Ѥ���FETCH���ޥ�ɤ�ȯ�Ԥ����硢�ƥ����ȷ����ȥХ��ʥ�����Τɤ���ǥǡ�����������Τ��ϡ��Х���ɥץ��ȥ����å������ǻ��ꤷ�ޤ��� ��������ϡ�������������Ǥλ�����񤭤��ޤ��� ���ƤΥ��������ƥ����ȷ���/�Х��ʥ�����Τɤ���Ǥⰷ�����Ȥ��Ǥ����ĥ�䤤��碌�ץ��ȥ���Ǥϡ��Х��ʥꥫ������Ȥ�����ǰ�ϵ켰�ʤ�ΤǤ���

WITH HOLD�����ꤵ��ʤ���С����Υ��ޥ�ɤ���������륫������ϸ��ߤΥȥ�󥶥���������ǤΤ߻��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �������äơ�WITH HOLD�Τʤ�DECLARE�ϥȥ�󥶥������֥��å��γ�¦�Ǥϰ�̣������ޤ��� ���ξ�硢��������Ϥ���ʸ����λ����ޤǤΤ�ͭ���Ǥ��� ���Τ��ᡢPostgreSQL�ϥȥ�󥶥������֥��å��γ����Ǥ����������ޥ�ɤ����Ѥ��줿��票�顼����𤷤ޤ��� �ȥ�󥶥������֥��å����������ˤϡ�BEGIN��COMMIT�ʤޤ���ROLLBACK�ˤ���Ѥ��Ƥ���������

WITH HOLD�����ꤵ�줿��硢�����������������ȥ�󥶥������Υ��ߥåȤ��������Ƥ��Ƥ⡢Ʊ�쥻�å������Τ��θ�Υȥ�󥶥�����󤫤餽�Υ�������˥����������뤳�Ȥ��Ǥ��ޤ� �ʤ��������ȥ�󥶥�����󤬥��ܡ��Ȥ��줿��硢���Υ�������Ϻ������ޤ��ˡ� WITH HOLD�դ��Ǻ������줿��������ϡ����Υ���������Ф�������Ū��CLOSE��ȯ�Ԥ��줿���䥻�å���󤬽�λ���������Ĥ����ޤ��� ���ߤμ����Ǥϡ��ݻ����줿���������Ȥä�ɽ�����Ԥϡ����θ�Υȥ�󥶥������Ǥ����ѤǤ���褦�ˡ�����ե����뤫�����ΰ�˥��ԡ�����ޤ���

�䤤��碌��FOR UPDATE�ޤ���FOR SHARE��ޤ��硢WITH HOLD����ꤹ�뤳�ȤϤǤ��ޤ���

�������뤫��������˥ǡ�������Ф����ˤϡ�SCROLL���ץ�������ꤷ�ʤ���Фʤ�ޤ��� �����ɸ��SQL�Ǥ�ɬ�ܤȤʤäƤ��ޤ��� �������������ΥС������Ȥθߴ������ݻ����뤿��ˡ�PostgreSQL�Ǥϡ�����������䤤��碌�ײ褬ñ��Ǥ��ꡢ���Υ��ݡ��Ȥ�;�פʥ����С��إåɤ�ɬ�פʤ���硢 SCROLL�ʤ��Ǥ�������˥ǡ�������Ф����Ȥ��Ǥ��ޤ��� ��������SCROLL���դ��ʤ��Ƥ�������˥ǡ��������Ф��뤳�Ȥ����Ѥ��ƥ��ץꥱ��������ȯ����ΤϤ����ᤷ�ޤ��� NO SCROLL����ꤷ�����ϡ��ɤΤ褦�ʾ��Ǥ�������˼��Ф����ȤϤǤ��ޤ���

�ޤ����䤤��碌��FOR UPDATE�ޤ���FOR SHARE��ޤ���ϡ��������μ��Ф��ϵ�����ޤ��� ���Τ��ᤳ�ξ���SCROLL����ꤹ�뤳�ȤϤǤ��ޤ���

注意

�����������ǽ��WITH HOLD�������뤬��ȯ�ؿ���項35.6���ȡˤ�ޤ��硢���ꤷ�ʤ���̤�⤿�餹��ǽ��������ޤ��� ����ޤǼ��Ф����Ԥ���ټ��Ф��������ؿ��ϺƼ¹Ԥ�����ǽ�������ꡢ���ξ�礪���餯���Ȱۤʤ��̤�⤿�餷�ޤ��� ������������β�����ˡ��1�ĤȤ��ơ����������WITH HOLD����������������鲿���Ԥ��ɤ߼�����˥ȥ�󥶥������򥳥ߥåȤ��뤳�Ȥ�����ޤ��� ����ˤ�궯��Ū�˥�������ν������Τ�����ΰ�˶񸽲����졢��ȯ�ؿ��ϳƹԤ��Ф���1�٤����¹Ԥ���ʤ��ʤ�ޤ���

�䤤��碌��FOR UPDATE�ޤ���FOR SHARE��ޤ��硢�̾�Τ��Υ��ץ��������SELECT���ޥ�ɤ�Ʊ�͡��֤����Ԥϼ��Ф��������ǥ��å�����ޤ��� ����ˡ��֤����ԤϤ�äȤ�ǿ��ΥС������ˤʤ�ޤ��� �������äơ����Υ��ץ����ϡ�ɸ��SQL��"���󥷥ƥ��֥�������"�ȸƤФ���Τ�Ʊ����ǽ���󶡤��ޤ��� ��INSENSITIVE��FOR UPDATE�ޤ���FOR SHARE�Ȥ��ä���˻��ꤹ��ȥ��顼�ˤʤ�ޤ�����

注意

���������UPDATE ... WHERE CURRENT OF�ޤ���DELETE ... WHERE CURRENT OF�ǻ��Ѥ���Ĥ��ʤ�С�FOR UPDATE�λ��Ѥ��̾ﴫ��ޤ��� FOR UPDATE����Ѥ��뤳�Ȥǡ����Ф��椪��ӹ������¾�Υ��å���󤬹Ԥ��ѹ����뤳�Ȥ��ɻߤ��ޤ��� FOR UPDATE���ʤ���С��������������˹Ԥ��ѹ����줿���˸�˹Ԥ�WHERE CURRENT OF���ޥ�ɤϸ��̤��ʤ��ʤ�ޤ���

FOR UPDATE����Ѥ���¾����ͳ�ϡ�"��ñ�˹�����ǽ"�ˤ��뤿��˥��������䤤��碌��ɸ��SQL�˹��ʤ����ʶ���Ū�ˤϥ��������1�ĤΥơ��֥�Τߤ򻲾Ȥ��ʤ���Фʤ餺���ޤ������롼�ײ���ORDER BY����Ѥ��ƤϤʤ�ʤ��ˡ����줬�ʤ��ȸ�˼¹Ԥ����WHERE CURRENT OF�����Ԥ��뤫�⤷��ʤ����ȤǤ��� �ײ�����ξܺ٤ˤ�äƤϡ���ñ�˹�����ǽ�Ǥʤ����������ư��뤫�⤷��ޤ��󤷡�ư��ʤ����⤷��ޤ��� ���Τ���ǰ��ξ�硢���ץꥱ�������ϻ����ư��뤬�����ѻ��˼��Ԥ��뤫�⤷��ޤ���

FOR UPDATE��WHERE CURRENT OF�Ȥ��ä���˻��Ѥ��ʤ��礭����ͳ�ϡ���������򥹥��������ǽ�ˤ���ɬ�פ����롢�ޤ��ϸ�ι����αƶ�������ʤ��褦�ˤ���ʤĤޤ�Ť��ǡ�����ɽ����³����褦�ˤ����ɬ�פ�������Τ���Ǥ��� ���줬ɬ�פʤ�С��嵭�ηٹ�˽�ʬ���դ��Ƥ���������

ɸ��SQL�Ǥϡ��Ȥ߹���SQL�ˤ����륫������Τߤ����ꤵ��Ƥ��ޤ��� PostgreSQL�����Фϥ��������Ѥ�OPENʸ��������Ƥ��ޤ��� ���������������줿���˳�������ΤȤߤʤ���Ƥ��ޤ��� ��������PostgreSQL�Ѥ�������SQL�ץ�ץ����å��Ǥ���ECPG�Ǥϡ�DECLARE��OPENʸ�ʤɤ�ޤᡢɸ��SQL�Υ������뵬��򥵥ݡ��Ȥ��Ƥ��ޤ���

pg_cursors�����ƥ�ӥ塼���䤤��碌�뤳�Ȥǡ����Ѳ�ǽ�ʤ��٤ƤΥ���������ǧ���뤳�Ȥ��Ǥ��ޤ���

��

���������������ޤ���

DECLARE liahona CURSOR FOR SELECT * FROM films;

����������ѤΤ��¿������ˤĤ��Ƥ�FETCH�򻲾Ȥ��Ƥ���������

�ߴ���

ɸ��SQL�Ǥϡ��ǥե���Ȥǥ������뤬�ظ�ˤ���ǡ�����Ʊ���¹Թ����򵤤Ť��ʤ���Фʤ�ʤ����ɤ����ϼ�����¸�Ǥ���ȽҤ٤Ƥ��ޤ��� PostgreSQL�Υ�������ϥǥե���ȤǤϵ��Ť�����FOR UPDATE����ꤹ�뤳�Ȥǵ��Ť����Ȥ��Ǥ��ޤ��� ¾�����ʤǤϰۤʤ�ư��򤹤뤫�⤷��ޤ���

ɸ��SQL�Ǥϡ����������������SQL��ȥ⥸�塼����ǤΤ߻��ѤǤ��ޤ��� PostgreSQL�Ǥϡ����ü��˥��������Ȥ����Ȥ��Ǥ��ޤ���

�Х��ʥꥫ�������PostgreSQL�γ�ĥ�Ǥ���

��Ϣ����

CLOSE, FETCH, MOVE