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

39.5. ����Ū��ʸ

���ᤪ��Ӽ���Ǥϡ�����Ū��PL/pgSQL�Dz�ᤵ��롢���Ƥμ����ʸ�ˤĤ����������ޤ��� �����μ����ʸ�Ȥ���ǧ����ʤ���Τ����ơ�SQL���ޥ�ɤǤ���Ȳ��ꤵ�졢項39.5.2�����項39.5.3�ˤ����Ƶ��Ҥ����褦�ˡ��ᥤ��ǡ����١������󥸥����������¹Ԥ���ޤ���

39.5.1. ����

�ͤ�PL/pgSQL�ѿ�������������ϰʲ��Τ褦�˵��Ҥ��ޤ���

variable := expression;

��Ҥ����̤ꡢ���Τ褦��ʸ��ˤ��뼰�ϡ��ᥤ��ǡ����١������󥸥�����������SELECT SQL���ޥ�ɤˤ�ä�ɾ������ޤ��� ����1�Ĥ��ͤ��������ʤ���Фʤ�ޤ��� (�ѿ������ѿ��ޤ��ϥ쥳�����ѿ��ξ��Ϲ��ͤȤʤ뤫�⤷��ޤ���)�� �оݤ��ѿ���ñ����ѿ�(�֥��å�̾�ǽ�����ǽ)�����ѿ��ޤ��ϥ쥳�����ѿ��Υե�����ɡ��ޤ���ñ����ѿ��ޤ��ϥե�����ɤȤʤ��������ǤȤ��뤳�Ȥ��Ǥ��ޤ���

���η�̥ǡ��������ѿ��Υǡ������˰��פ��ʤ���硢�ޤ��ϡ��ѿ�����char(20)�Τ褦�ˡ�������礭��/���٤���ľ�硢��̤��ͤ� PL/pgSQL���󥿥ץ꥿�ˤ�äơ���̤η��ν��ϴؿ����ѿ��η������ϴؿ�����Ѥ��ư���Ū���Ѵ�����ޤ��� ����ˤ�ꡢ����ͤ�ʸ������������ϴؿ��Ǽ����դ��뤳�Ȥ��Ǥ��ʤ����ˡ����ϴؿ��ˤ����Ƽ¹Ի����顼��ȯ�������ǽ�������뤳�Ȥ����դ��Ƥ���������

�㡧

tax := subtotal * 0.06;
my_record.user_id := 20;

39.5.2. ��̤�ȼ��ʤ����ޥ�ɤμ¹�

�㤨�С�RETURNING��Τʤ�INSERT�Τ褦�ˡ��Ԥ��֤��ʤ�Ǥ�դ�SQL�Υ��ޥ�ɤˤĤ��Ƥϡ�ñ�ˤ��Υ��ޥ�ɤ򵭽Ҥ��뤳�Ȥˤ�ä�PL/pgSQL�ؿ��������ǥ��ޥ�ɤ�¹ԤǤ��ޤ���

���ޥ�ɥƥ����Ȥ˸�������Ƥ�PL/pgSQL�ѿ�̾�ϡ��ѥ�᡼���Ȥ��ư����ޤ��� ���θ塢�¹Ի��Υѥ�᡼���ͤȤ��ơ����λ������ѿ��ͤ��󶡤���ޤ��� ����ϰ����˽Ҥ٤����˴ؤ��������Ʊ���Ǥ��� 項39.10.1�򻲾Ȥ��Ƥ���������

SQL���ޥ�ɤ����Τ褦�˼¹Ԥ����ȡ�PL/pgSQL�ϥ��ޥ�ɤ���٤����ײ褷���ǡ����١�����³�����Ǥ����ޤǡ��ʸ�μ¹ԤǤ��ηײ������Ѥ��ޤ��� ����˴ؤ���ܺ٤ˤĤ��Ƥ�項39.10.2�򻲾Ȥ��Ƥ���������

���ޤ���SELECT�䤤��碌��ɾ�����Ʒ�̤��˴����뤳�Ȥ������Ω�ľ�礬����ޤ��� �㤨�С��ؿ��θƤӽФ��ˤ����ơ�����Ū�����̤�����Ǥ��뤬����̤�̵�ѤǤ�����Ǥ��� ���Τ褦�ʻ�PL/pgSQL�Ǥϡ�PERFORMʸ����Ѥ��Ƥ���������

PERFORM query;

�����query��¹Ԥ������η�̤��˴����ޤ��� SQL��SELECTʸ��Ʊ����ˡ��query�򵭽Ҥ��ޤ������ǽ�Υ������SELECT��PERFORM���֤������Ƥ��������� ��̤��֤��ʤ����ޥ�ɤ�Ʊ�ͤˡ�PL/pgSQL�ѿ����䤤��碌����֤�������졢�ײ��Ʊ�ͤ˥���å��夵��ޤ��� �ޤ����ü���ѿ��Ǥ���FOUND���䤤��碌��̤�1�ԤǤ��������줿���Ͽ������ꤵ�졢��������ʤ����ϵ������ꤵ��ޤ���項39.5.5�򻲾Ȥ��Ƥ��������ˡ�

注意: ľ��SELECT�򵭽Ҥ���С����η�̤����뤳�Ȥ��Ǥ���ȹͤ��뤫�⤷��ޤ��󤬡��������Ǥ����Ԥ���ˡ��PERFORM��������ޤ��� SELECT�Τ褦�˹Ԥ��֤�SQL���ޥ�ɤϡ����顼�Ȥ��Ƶ��䤵��ޤ��� �ʤ���INTO���ͭ��������㳰�Ǥ��ꡢ������������ޤ���

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

PERFORM create_mv('cs_session_page_requests_mv', my_query);

39.5.3. 1�Ԥη�̤��֤��䤤��碌�μ¹�

��¿ʬ��ʣ����Ρ�1�Ԥ��֤�SQL���ޥ�ɤη�̤ϡ��쥳�����ѿ����Է����ѿ����������ѿ��Υꥹ�Ȥ��������뤳�Ȥ��Ǥ��ޤ��� ����ϡ�����Ū��SQL���ޥ�ɤ򵭽Ҥ��ơ������INTO����ɲä��뤳�Ȥˤ�äƹԤ��ޤ��� �ʲ�����򼨤��ޤ���

SELECT select_expressions INTO [STRICT] target FROM ...;
INSERT ... RETURNING expressions INTO [STRICT] target;
UPDATE ... RETURNING expressions INTO [STRICT] target;
DELETE ... RETURNING expressions INTO [STRICT] target;

�����ǡ�target�ϥ쥳�����ѿ������ѿ������뤤�ϡ�ñ����ѿ��ȥ쥳����/���ѿ��Υե�����ɤ򥫥�ޤǶ��ڤä��ꥹ�ȤǤ��� PL/pgSQL�ѿ��ˤ��Ĥ���䤤��碌���ִ����졢�Ԥ��֤��ʤ����ޥ�ɤˤ����ƽҤ٤��褦�˷ײ褬����å��夵��ޤ��� ���Τ褦�˺�ư����Τϡ�RETURNING��ȼ�ä�INSERT/UPDATE/DELETE��SELECT����ӹԥ��åȤη�̤��֤��桼�ƥ���ƥ����ޥ�ɡ��㤨�С�EXPLAIN�ˤǤ��� INTO��ʳ��Ǥϡ�SQL���ޥ�ɤ�PL/pgSQL�γ����˵��Ҥ�����Τ�Ʊ���Ǥ���

ティップ: �̾��PostgreSQL��SELECT INTOʸ�Ǥϡ�INTO���оݤϿ��������������ơ��֥�Ǥ��� ��������INTO��ȼ�ä�SELECT�Ǥϡ����β�᤬�̾���礭���ۤʤ뤳�Ȥ����դ��Ƥ��������� PL/pgSQL�ؿ�������SELECT�η�̤���ơ��֥��������������ϡ�CREATE TABLE ... AS SELECT��ʸ����Ѥ��Ƥ���������

�Ԥޤ����ѿ��ꥹ�Ȥ��оݤ˻��Ѥ��줿��硢����ȥǡ������ˤ������䤤��碌�η�̤��оݤι�¤�����Τ˰��פ��ʤ���Фʤ�ޤ��� ����ʤ��ȡ��¹Ի����顼��ȯ�����ޤ��� �쥳�����ѿ����оݤξ��ϡ��䤤��碌��̤���ιԷ��˼��Ȥ�ưŪ�����ꤷ�ޤ���

INTO���SQL���ޥ�ɤΤۤȤ��Ǥ�դξ��˵��Ҥ��뤳�Ȥ��Ǥ��ޤ��� ����Ū�ˤϡ�SELECTʸ�ˤ����Ƥ�select_expressions��ľ���ޤ���ľ��ˡ�¾�Υ��ޥ�ɤˤ����Ƥ�ʸ�ν����˵��Ҥ���ޤ��� ����ΥС�������PL/pgSQL�Υѡ�������긷�ʤˤʤ���������ơ����ν����˽������Ȥ�侩���ޤ���

INTO��ˤ�����STRICT�����ꤵ��ʤ���硢target���䤤��碌���֤��ǽ�ιԤȤʤꡢ�Ԥ��֤��ʤ�����NULL�Ȥʤ�ޤ��� ��"�ǽ�ι�"�Ȥ�ORDER BY����Ѥ��ʤ�������Ǥ��ʤ����Ȥ����դ��Ƥ����������� 2���ܰʹߤιԤη�̤ϡ������˴�����ޤ��� �ʲ��Τ褦�ˡ��ü��FOUND�ѿ���項39.5.5�򻲾Ȥ��Ƥ��������ˤ�Ĵ�٤ơ��Ԥ��֤��줿���ɤ����򸡺����뤳�Ȥ��Ǥ��ޤ���

SELECT * INTO myrec FROM emp WHERE empname = myname;
IF NOT FOUND THEN
    RAISE EXCEPTION 'employee % not found', myname;
END IF;

STRICT���ץ���󤬻��ꤵ�줿��硢�䤤��碌�����Τ�1�Ԥ��֤��ʤ���Фʤ�ޤ��� ����ʤ��ȡ��Ԥ��ʤ�����NO_DATA_FOUND��2�԰ʾ夬�֤ä�����TOO_MANY_ROWS�Ȥ����¹Ի����顼�������ޤ��� ���顼����ª���������ϡ��㳰�֥��å�����ѤǤ��ޤ��� �ʲ�����򼨤��ޤ���

BEGIN
    SELECT * INTO STRICT myrec FROM emp WHERE empname = myname;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            RAISE EXCEPTION 'employee % not found', myname;
        WHEN TOO_MANY_ROWS THEN
            RAISE EXCEPTION 'employee % not unique', myname;
END;

STRICT����ꤷ�����ޥ�ɤ���������ȡ�FOUND�ѿ��Ͼ�˿������ꤵ��ޤ���

STRICT�����ꤵ��ʤ����Ǥ⡢RETURNING��ȼ�ä�INSERT/UPDATE/DELETE��2�԰ʾ���֤������ϡ����顼�Ȥʤ�ޤ��� �ʤ��ʤ顢�ɤ�1�Ԥ��֤������ꤹ��ORDER BY�Τ褦�ʥ��ץ����¸�ߤ��ʤ�����Ǥ���

注意: STRICT���ץ����ϡ�Oracle��PL/SQL��SELECT INTO����Ӵ�Ϣ����ʸ���б����ޤ���

SQL���䤤��碌���֤�ʣ���Ԥη�̤�������������ϡ�項39.6.4�򻲾Ȥ��Ƥ���������

39.5.4. ưŪ���ޥ�ɤμ¹�

PL/pgSQL�ؿ��������ǡ�ưŪ���ޥ�ɡ��Ĥޤ�¹Ԥ����٤��̤Υơ��֥���̤Υǡ���������Ѥ��륳�ޥ�ɤ������������Ȥ������Ȥ��褯����Ǥ��礦�� PL/pgSQL���̾�Ԥ����ޥ�ɤηײ�Υ���å���ϡ�項39.10.2�ǽҤ٤��褦�ˡˤ��Τ褦�ʾ����Ǥ�ư��ޤ��� ���μ������򰷤�����ˡ��ʲ���EXECUTEʸ���Ѱդ���Ƥ��ޤ���

EXECUTE command-string [ INTO [STRICT] target ] [ USING expression [, ... ] ];

�����ǡ�command-string�ϼ¹Ԥ���륳�ޥ�ɤ�ޤ��text���Ρ�ʸ������������뼰�Ǥ��� ���ץ�����target�ϥ쥳�����ѿ������ѿ������뤤�ϡ�ñ����ѿ��ȥ쥳����/���ѿ��Υե�����ɤ򥫥�ޤǶ��ڤä��ꥹ�Ȥǡ�������˥��ޥ�ɤη�̤���Ǽ����ޤ��� ���ץ�����USING���� ���ޥ�ɤ�����������ͤ�Ϳ���ޤ���

PL/pgSQL�ѿ��ϡ����α黻�ѤΥ��ޥ��ʸ������ִ�����ޤ��� ɬ�פ��ѿ����ͤϤ��٤ƥ��ޥ��ʸ��������������������ޤʤ���Фʤ�ޤ��� �⤷���ϡ��ʲ�����������ѥ�᡼������Ѥ��뤳�Ȥ�Ǥ��ޤ���

�ޤ���EXECUTE��𤷤Ƽ¹Ԥ���륳�ޥ�ɷײ�򥭥�å��夹�뤳�ȤϤ���ޤ��� ����ˡ����ޥ�ɤ�ʸ���¹Ԥ������˽�������ޤ��� �������äơ��ۤʤ�ơ��֥������Ф�������¹ԤǤ���褦�ˡ����ޥ��ʸ�����ؿ�������ưŪ�˺������뤳�Ȥ��Ǥ��ޤ���

INTO��ϡ��Ԥ��֤�SQL���ޥ�ɤη�̤���������٤�������ꤷ�ޤ��� �Ԥޤ����ѿ��ꥹ�Ȥ��Ѥ��������������䤤��碌�η�̤ι�¤�����Τ˰��פ��ʤ���Фʤ�ޤ��� (�쥳�����ѿ������Ѥ���������ưŪ�˷�̤ι�¤�Ȱ��פ���褦�˼��Ȥ��ۤ����ޤ��ˡ� ʣ���ιԤ��֤��줿�����ǽ�ιԤ�����INTO�ѿ�����������ޤ��� 1�Ԥ��֤���ʤ�����NULL ��INTO�ѿ�����������ޤ��� INTO�礬���ꤵ��ʤ������䤤��碌�η�̤ϼΤƤ��ޤ���

STRICT���ץ���󤬻��ꤵ�줿�����䤤��碌�η�̤����Τ�1�Ԥξ�����������顼�Ȥʤ�ޤ���

���ޥ��ʸ����ϥѥ�᡼���ͤ���Ѳ�ǽ�ǡ�������$1��$2���Ȥ��ƥ��ޥ�ɤ���ǻ��Ȥ���ޤ��� �����ε����USING��Ϳ�������ͤ򻲾Ȥ��ޤ��� ���������ϥǡ������ͤ�ƥ����ȤȤ��ƥ��ޥ��ʸ����������������ݡ��褯���ޤ�ޤ��� ������ͤ�ƥ����Ȥ��Ѵ��������Ƥ��εդ�Ԥ����μ¹Ի������С��إåɤ��ɻߤ���ȤȤ�ˡ��������դ�����Ȥ������������פ򤹤�ɬ�פ��ʤ����ᡢSQL���󥸥�������󹶷���Ф��Ƥ�꽱���ˤ����ʤ�ޤ��� �ʲ�����򼨤��ޤ���

EXECUTE 'SELECT count(*) FROM mytable WHERE inserted_by = $1 AND inserted <= $2'
   INTO c
   USING checked_user, checked_date;

�ѥ�᡼������ϥǡ����ͤΤ߻��Ѳ�ǽ�Ǥ��� �⤷ưŪ�˷��ꤵ���ơ��֥����̾����Ѥ�������硢�ƥ����Ȥǥ��ޥ��ʸ����ˤ�������������ɬ�פ�����ޤ��� �㤨�С���Ԥ����䤤��碌����ưŪ�����򤵤줿�ơ��֥���Ф��ƽ��������ɬ�פ�������ϡ����Τ褦�ˤ��ޤ���

EXECUTE 'SELECT count(*) FROM '
    || tabname::regclass
    || ' WHERE inserted_by = $1 AND inserted <= $2'
   INTO c
   USING checked_user, checked_date;

¾�ˤ�ѥ�᡼�������SELECT��INSERT��UPDATE��DELETE���ޥ�ɤǤ���ư��ʤ����Ȥ������¤�����ޤ��� ¾�μ����ʸ(����Ū�˥桼�ƥ���ƥ�ʸ�ȸƤФ�ޤ�)�Ǥϡ�ñ�ʤ�ǡ����ͤǤ��ä��Ȥ��Ƥ�ƥ����Ȥ��ͤȤ��������ޤʤ���Фʤ�ޤ���

�ǽ����Τ褦�ˡ�ñ���������ޥ�ɤ�USING�ѥ�᡼����Ȥä�EXECUTE�ϡ����ޥ�ɤ�ľ��PL/pgSQL�ǽ񤤤ơ�PL/pgSQL�ѿ���ưŪ���ִ�������Τȵ�ǽŪ��Ʊ���Ǥ��� ���פʺ��ۤȤ��ơ�EXECUTE�����ߤΥѥ�᡼���ͤ��ò������ײ�������������ޥ�ɤ�¹Ԥ����٤˷ײ��ƺ������뤳�ȤǤ��� ������PL/pgSQL���̾����Ū�ʷײ����������ƻ��Ѥ���������å��夷�ޤ��� ��Ŭ�ʷײ褬�ѥ�᡼���ͤ��礭����¸�����硢EXECUTE�������˹�®������ޤ������ײ褬�ѥ�᡼���ͤ˰�¸���ʤ���硢�ײ�κƺ�����̵�̤ˤʤ�ޤ���

SELECT INTO��EXECUTE�Ǥϸ��ߥ��ݡ��Ȥ���ޤ��� ����ˡ����̤�SELECT���ޥ�ɤ�¹Ԥ���EXECUTE�ΰ����Ȥ���INTO�򵭽Ҥ��Ƥ���������

注意: PL/pgSQL EXECUTEʸ��PostgreSQL�����Фǥ��ݡ��Ȥ���Ƥ���EXECUTESQLʸ�Ȥϴ�Ϣ������ޤ��� �����Ф�EXECUTEʸ��PL/pgSQL�ؿ���ǻ��Ѥ��뤳�ȤϤǤ��ޤ���ʻ��Ѥ���ɬ�פ⤢��ޤ���ˡ�

例 39-1. ưŪ�䤤��碌������ͤΰ������դ�

ưŪ���ޥ�ɤ���Ѥ���������Ф���PL/pgSQL�Ǥ�ñ�������򥨥������פ��ʤ���Фʤ�ޤ��� �ؿ����Τˤ��������Υƥ����Ȥ�������դ�����侩��ˡ�ϡ��ɥ���������Ѥ�����ˡ�Ǥ��� �ʥɥ��������Ѥ��ʤ��켰�Υ����ɤ���ͭ���Ƥ�����ϡ�項39.11.1�γ��פ򻲾Ȥ��뤳�Ȥ������򤷤䤹�������ɤؤ��Ѵ���Ȥμ�����ˤʤ�ޤ��ˡ�

���������䤤��碌���������٤�ưŪ���ͤϡ����켫�Ȥ������˰������ޤ��ǽ�������뤿�ᡢ���տ���������ɬ�פǤ��� �ʲ�����򼨤��ޤ��ʤ����Ǥϴؿ��˥ɥ��������Ѥ�����ˡ����Ѥ���Ȳ��ꤷ�Ƥ���Τǡ����������Ų�����ɬ�פϤ���ޤ���ˡ�

EXECUTE 'UPDATE tbl SET '
        || quote_ident(colname)
        || ' = '
        || quote_literal(newvalue)
        || ' WHERE key = '
        || quote_literal(keyvalue);

������ϡ�quote_ident��quote_literal�ؿ���項9.4�򻲾ȡˤλ�����ˡ�򼨤��Ƥ��ޤ��� �����Τ��ᡢ��ޤ��ϥơ��֥뼱�̻Ҥ�ޤ༰��ưŪ�䤤��碌��������������quote_ident��𤷤��Ϥ���ʤ��ƤϤʤ�ޤ��� �Ȥ�Ω�Ƥ��륳�ޥ�ɤ���Υ�ƥ��ʸ����Ȥʤ�Ϥ����ͤ�ޤ༰�ϡ�quote_literal��𤷤��Ϥ���ʤ���Фʤ�ޤ��� �����δؿ��ϡ����٤Ƥ��ü�ʸ����Ŭ�ڤ˥��������פ��������������Ű�����ޤ���ñ�������ǰϤޤ줿���ϥƥ����Ȥ��֤�����ˡ�Ŭ�ڤʼ���Ƨ�ߤޤ���

quote_literal��STRICT��٥��դ�����Ƥ��뤿�ᡢNULL�����ǸƤӽФ��줿��硢���NULL���֤��ޤ��� �嵭����ǡ�newvalue�ޤ���keyvalue��NULL�ξ�硢ưŪ��礻ʸ�������Τ�NULL�ȤʤꡢEXECUTE����Υ��顼��Ƴ���ޤ��� quote_nullable�ؿ�����Ѥ��뤳�Ȥǡ������������򤹤뤳�Ȥ��Ǥ��ޤ��� ����ư��ϡ�NULL�����դ��ǸƤӽФ��줿����ʸ����NULL���֤����Ȥ������quote_literal��Ʊ��Ǥ��� �ʲ�����򼨤��ޤ���

EXECUTE 'UPDATE tbl SET '
        || quote_ident(colname)
        || ' = '
        || quote_nullable(newvalue)
        || ' WHERE key = '
        || quote_nullable(keyvalue);

NULL�β�ǽ���Τ����ͤ��������ΤǤ���С��̾�quote_literal�������quote_nullable����Ѥ��ʤ���Фʤ�ޤ���

���Ĥ�Τ褦�ˡ��䤤��碌�����NULL�ͤϰտޤ��ʤ���̤�μ¤ˤ⤿�餵�ʤ��褦��θ�򤷤ʤ���Фʤ�ޤ��� �㤨�м��Τ褦��WHERE��η�̤Ϥɤ��ʤ�ΤǤ��礦��

'WHERE key = ' || quote_nullable(keyvalue)

�����keyvalue��NULL�Ǥ���¤��������ޤ��� ������ͳ�ϡ������黻��=��NULL���ڥ��ɤǻ��Ѥ���Ȥ��η�̤Ͼ��NULL�Ȥʤ뤫��Ǥ��� NULL���̾�Υ������ͤ�Ʊ���褦��ư���������硢�嵭�򡢰ʲ��Τ褦�˽񤭴����ʤ���Фʤ�ޤ���

'WHERE key IS NOT DISTINCT FROM ' || quote_nullable(keyvalue)

�ʸ������Ǥϡ�IS NOT DISTINCT FROM��=�������Ψ�������ʤ������ޤ��Τǡ�ɬ�פ�����줿���ʳ��ϹԤ�ʤ��褦�ˤ��Ƥ��������� NULL��IS DISTINCT�ˤĤ��Ƥι��ʤ�����項9.2�򻲾Ȥ��Ƥ�����������

�ɥ������ϸ���Υƥ����Ȥ�������դ�������Τ�ͭ�ѤǤ���Ȥ������Ȥ����դ��Ƥ��������� ������򼡤Τ褦�˵��Ҥ���Τ����˰����ͤ��Ǥ���

EXECUTE 'UPDATE tbl SET '
        || quote_ident(colname)
        || ' = $$'
        || newvalue
        || '$$ WHERE key = '
        || quote_literal(keyvalue);

�ʤ��ʤ顢newvalue�����Ƥ����ޤ���$$��ޤ���ϡ�����Ǽ��ν����ذܤäƤ��ޤ�����Ǥ��� Ʊ�ͤ���¬���֤ϡ��ɥ�������¾�ζ��ڤ�ʸ������������ⵯ����ޤ��� �������äơ��ƥ����Ȥ����Ƥ��İ����Ƥ��ʤ����ϡ������˥ƥ����Ȥ�������դ����뤿��ˡ�quote_literal��quote_nullable���ޤ���quote_ident�ؿ���Ŭ�ڤ˻������ʤ���Фʤ�ޤ�����

ưŪ�䤤��碌��EXECUTE��Ĺ������例39-7�ˤ���ޤ��� ����Ͽ������ؿ���������뤿���CREATE FUNCTION���ޥ�ɤ��Ȥ�Ω�Ƽ¹Ԥ����ΤǤ���

39.5.5. ��̥��ơ������μ���

���ޥ�ɤθ��̤�Ƚ�Ǥ���ˤϤ����Ĥ���ˡ������ޤ��� �ǽ����ˡ�ϰʲ��Τ褦�ʷ�����GET DIAGNOSTICS����Ѥ�����ˡ�Ǥ���

GET DIAGNOSTICS variable = item [ , ... ];

���Υ��ޥ�ɤˤ�äƥ����ƥॹ�ơ��������󥸥���������Ф����Ȥ��Ǥ��ޤ��� ��item�ϡ����ꤵ�줿�ѿ��ʤ���ϼ�����뤿����������ǡ������Ǥʤ���Фʤ�ޤ���ˤ��������������ͤ��̤��륭����ɤǤ��� ���߻��Ѳ�ǽ�ʥ��ơ��������ܤϡ�SQL���󥸥���������줿�ǽ�SQL���ޥ�ɤˤ��������줿�Կ��򼨤�ROW_COUNT������ӡ��Ǥ�Ƕ��SQL���ޥ�ɤˤ���������줿�Ǹ�ιԤ�OID�򼨤�RESULT_OID�Ǥ��� RESULT_OID��OID����ͭ����ơ��֥�ؤ�INSERT���ޥ�ɤθ�ǤΤ�ͭ�դǤ��뤳�Ȥ����դ��Ƥ���������

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

GET DIAGNOSTICS integer_var = ROW_COUNT;

���ޥ�ɤθ��̤�Ƚ�Ǥ���2���ܤ���ˡ�ϡ�FOUND�Ȥ���boolean�����ü���ѿ��򸡺����뤳�ȤǤ��� PL/pgSQL�γƴؿ��ƤӽФ��ǻ��Ѥ����ݡ�FOUND�Ϻǽ�ϵ������ꤵ��Ƥ��ޤ��� �ʲ��Τ褦�ˡ����줾���ʸ�μ���ˤ�ä����꤬�ѹ�����ޤ���

¾��PL/pgSQLʸ��FOUND�ξ��֤��ѹ����ޤ��� �äˡ�EXECUTE��GET DIAGNOSTICS�ν��Ϥ��ѹ����ޤ�����FOUND���ѹ����ʤ����Ȥ����դ��Ƥ���������

FOUND�Ϥ��줾���PL/pgSQL�ؿ������Υ��������ѿ��Ǥ��� FOUND���Ф��ƹԤ�줿���Ƥ��ѹ��ϡ����ߤδؿ��ˤΤ߱ƶ����ޤ���

39.5.6. �ޤä������⤷�ʤ�

���⤷�ʤ��ץ졼���ۥ��ʸ��ͭ�Ѥˤʤ뤳�Ȥ�����ޤ��� �㤨�С�IF/THEN/ELSEʸ�ΰ�������ʸ�Ǥ��뤳�Ȥ��������������Ǥ��� ���Τ褦����Ū�ˤ�NULLʸ����Ѥ��ޤ���

NULL;

�㤨�С�����2�ĤΥ����ɤ�Ʊ���Ǥ���

BEGIN
    y := x / 0;
EXCEPTION
    WHEN division_by_zero THEN
        NULL;  -- �����̵�뤹��
END;
    END;

BEGIN
    y := x / 0;
EXCEPTION
    WHEN division_by_zero THEN  -- �����̵�뤹��
END;

�ɤ��餬˾�ޤ����Ȼפ����ϡ����ߤ�����Ǥ���

注意: Oracle��PL/SQL�Ǥ�̵���Ҥ�ʸ�ϵ�����ޤ���Τǡ��������������Ǥ�NULLʸ��ɬ���Ǥ��� ������PL/pgSQL�Ǥ�̵���Ҥ�ʸ�����Ĥ���Ƥ��ޤ���