| PostgreSQL 9.3.2ʸ�� | ||||
|---|---|---|---|---|
| 前のページ | 上に戻る | 第 40章PL/pgSQL - SQL��³������ | 次のページ | |
���ᤪ��Ӽ���Ǥϡ�����Ū��PL/pgSQL�Dz�ᤵ��롢���Ƥμ����ʸ�ˤĤ����������ޤ��� �����μ����ʸ�Ȥ���ǧ����ʤ���Τ����ơ�SQL���ޥ�ɤǤ���Ȳ��ꤵ�졢項40.5.2�����項40.5.3�ˤ����Ƶ��Ҥ����褦�ˡ��ᥤ��ǡ����١����������������¹Ԥ���ޤ���
�ͤ�PL/pgSQL�ѿ�������������ϰʲ��Τ褦�˵��Ҥ��ޤ���
variable := expression;
��Ҥ����̤ꡢ���Τ褦��ʸ��ˤ��뼰�ϡ��ᥤ��ǡ����١�����������������SELECT SQL���ޥ�ɤˤ�ä�ɾ������ޤ��� ����1�Ĥ��ͤ��������ʤ���Фʤ�ޤ��� (�ѿ������ѿ��ޤ��ϥ쥳�����ѿ��ξ��Ϲ��ͤȤʤ뤫�⤷��ޤ���)�� �оݤ��ѿ���ñ����ѿ�(�֥��å�̾�ǽ�����ǽ)�����ѿ��ޤ��ϥ쥳�����ѿ��Υե�����ɡ��ޤ���ñ����ѿ��ޤ��ϥե�����ɤȤʤ��������ǤȤ��뤳�Ȥ��Ǥ��ޤ���
���η�̥ǡ��������ѿ��Υǡ������˰��פ��ʤ���硢�ޤ��ϡ��ѿ�����char(20)�Τ褦�ˡ�������礭��/���٤���ľ�硢��̤��ͤ� PL/pgSQL���ץ�ˤ�äơ���̤η��ν��ϴؿ����ѿ��η������ϴؿ�����Ѥ��ư���Ū���Ѵ�����ޤ��� ����ˤ�ꡢ����ͤ�ʸ������������ϴؿ��Ǽ����դ��뤳�Ȥ��Ǥ��ʤ����ˡ����ϴؿ��ˤ����Ƽ¹Ի����顼��ȯ�������ǽ�������뤳�Ȥ����դ��Ƥ���������
�㡧
tax := subtotal * 0.06; my_record.user_id := 20;
�㤨�С�RETURNING��Τʤ�INSERT�Τ褦�ˡ��Ԥ��֤��ʤ�Ǥ�դ�SQL�Υ��ޥ�ɤˤĤ��Ƥϡ�ñ�ˤ��Υ��ޥ�ɤҤ��뤳�Ȥˤ�ä�PL/pgSQL�ؿ��������ǥ��ޥ�ɤ�¹ԤǤ��ޤ���
���ޥ�ɥƥ����Ȥ˸�������Ƥ�PL/pgSQL�ѿ�̾�ϡ��ѥ����Ȥ��ư����ޤ��� ���θ塢�¹Ի��Υѥ����ͤȤ��ơ����λ������ѿ��ͤ�����ޤ��� ����ϰ����˽Ҥ٤����˴ؤ��������Ʊ���Ǥ��� 項40.10.1�Ȥ��Ƥ���������
SQL���ޥ�ɤ����Τ褦�˼¹Ԥ����ȡ�項40.10.2�˵��Ҥ����褦�ˡ�PL/pgSQL�ϥ��ޥ�ɤΤ���ˡ��¹Էײ��å��夷�ƺ����Ѥ��ޤ���
���ޤ���SELECT�䤤��碌��ɾ�����Ʒ�̤��˴����뤳�Ȥ������Ω�ľ�礬����ޤ��� �㤨�С��ؿ��θƤӽФ��ˤ����ơ�����Ū�����̤�����Ǥ��뤬����̤�̵�ѤǤ�����Ǥ��� ���Τ褦�ʻ�PL/pgSQL�Ǥϡ�PERFORMʸ����Ѥ��Ƥ���������
PERFORM query;
�����query��¹Ԥ������η�̤��˴����ޤ��� SQL��SELECTʸ��Ʊ����ˡ��query�Ҥ��ޤ������ǽ�Υ������SELECT��PERFORM���֤������Ƥ��������� WITH�䤤��碌���Ф��Ƥϡ�PERFORM ����Ѥ��ơ��䤤��碌�å�������֤��Ƥ��������� �ʤ��ξ�硢�䤤��碌��1�Ԥ����֤����Ȥ��Ǥ��ޤ����� ��̤��֤��ʤ����ޥ�ɤ�Ʊ�ͤˡ�PL/pgSQL�ѿ����䤤��碌����֤�������졢�ײ��Ʊ�ͤ˥���å��夵��ޤ��� �ޤ����ü���ѿ��Ǥ���FOUND���䤤��碌��̤�1�ԤǤ��������줿���Ͽ������ꤵ�졢��������ʤ����ϵ������ꤵ��ޤ���項40.5.5�Ȥ��Ƥ��������ˡ�
注意: ľ��SELECT�Ҥ���С����η�̤����뤳�Ȥ��Ǥ���ȹͤ��뤫�⤷��ޤ����������Ǥ����Ԥ���ˡ��PERFORM��������ޤ��� SELECT�Τ褦�˹Ԥ��֤�SQL���ޥ�ɤϡ����顼�Ȥ��Ƶ��䤵��ޤ��� �ʤ���INTO���ͭ��������㳰�Ǥ��ꡢ������������ޤ���
�ʲ�������ޤ���
PERFORM create_mv('cs_session_page_requests_mv', my_query);
��¿ʬ��ʣ����Ρ�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�ѿ���項40.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���䤤��碌���֤�ʣ���Ԥη�̤�������������ϡ�項40.6.4�Ȥ��Ƥ���������
PL/pgSQL�ؿ��������ǡ�ưŪ���ޥ�ɡ��Ĥޤ�¹Ԥ����٤��̤Υơ��֥���̤Υǡ���������Ѥ��륳�ޥ�ɤ������������Ȥ������Ȥ��褯����Ǥ��礦�� PL/pgSQL���̾�Ԥ����ޥ�ɤηײ�Υ���å���ϡ�項40.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�ؿ���ǻ��Ѥ��뤳�ȤϤǤ��ޤ���ʻ��Ѥ���ɬ�פ⤢��ޤ���ˡ�
例 40-1. ưŪ�䤤��碌������ͤΰ������դ�
ưŪ���ޥ�ɤ���Ѥ���������Ф���PL/pgSQL�Ǥ�ñ�������������פ��ʤ���Фʤ�ޤ��� �ؿ����Τˤ��������Υƥ����Ȥ�������դ�����侩��ˡ�ϡ��ɥ���������Ѥ�����ˡ�Ǥ��� �ʥɥ��������Ѥ��ʤ��켰�Υ����ɤ���ͭ���Ƥ�����ϡ�項40.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�ؿ���Ŭ�ڤ˻������ʤ���Фʤ�ޤ�����
ưŪ SQL ʸ��format�ؿ�����Ѥ��Ƥ�����˺����Ǥ��ޤ���項9.4���ȡˡ�
����ޤ���
EXECUTE format('UPDATE tbl SET %I = %L WHERE key = %L', colname, newvalue, keyvalue);
format�ؿ���USING��ȶ��˻��ѤǤ��ޤ���
EXECUTE format('UPDATE tbl SET %I = $1 WHERE key = $2', colname)
USING newvalue, keyvalue;���η����Ϥ����ͭ���Ǥ��� �ʤ��ʤ顢newvalue��keyvalue�ѥ����ϡ��ƥ����ȷ����Ѵ�����ʤ�����Ǥ���
ưŪ�䤤��碌��EXECUTE��Ĺ������例40-9�ˤ���ޤ��� ����Ͽ������ؿ���������뤿���CREATE FUNCTION���ޥ�ɤ��Ȥ�Ω�Ƽ¹Ԥ����ΤǤ���
���ޥ�ɤθ��̤�Ƚ�Ǥ���ˤϤ����Ĥ���ˡ������ޤ��� �ǽ����ˡ�ϰʲ��Τ褦�ʷ�����GET DIAGNOSTICS����Ѥ�����ˡ�Ǥ���
GET [ CURRENT ] 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�Ϻǽ�ϵ������ꤵ��Ƥ��ޤ��� �ʲ��Τ褦�ˡ����줾���ʸ�μ���ˤ�ä����꤬�ѹ�����ޤ���
SELECT INTOʸ�ϡ��Ԥ��������줿���Ͽ����֤���ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
PERFORMʸ�ϡ�1�İʾ�ιԤ��������˴��ˤ��줿���Ͽ����ޤä�����������ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
UPDATE��INSERT�������DELETEʸ�ϡ����ʤ��Ȥ�1�Ԥ��ƶ�����������Ͽ����ޤä����ƶ�������ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
FETCHʸ�ϡ��Ԥ��֤��줿���Ͽ����ޤä����֤���ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
MOVEʸ�ϡ���������ΰ�ư���������������Ͽ������Ԥ������ϵ���FOUND�����ꤷ�ޤ���
FORʸ�ޤ���FOREACHʸ�ϡ�1��ʾ巫���֤����Ԥ�줿���Ͽ����Ԥ��ʤ��ä����ϵ���FOUND�����ꤷ�ޤ��� FOUND�ϥ롼�פ���λ�����ݡ����Τ褦�����ꤵ��ޤ��� �롼�¹���ϥ롼��ʸ�ˤ��FOUND���ѹ��Ϥ���ޤ��� ���������롼���������¾�����ʸ��¹Ԥ��뤳�Ȥˤ�äơ��ѹ�����뤫�⤷��ޤ���
RETURN QUERY��RETURN QUERY EXECUTEʸ�ϡ��䤤��碌���ԤĤǤ��֤��п����Ԥ��֤���ʤ���е������ꤷ�ޤ���
¾��PL/pgSQLʸ��FOUND�ξ��֤��ѹ����ޤ��� �äˡ�EXECUTE��GET DIAGNOSTICS�ν��Ϥ��ѹ����ޤ�����FOUND���ѹ����ʤ����Ȥ����դ��Ƥ���������
FOUND�Ϥ��줾���PL/pgSQL�ؿ������Υ��������ѿ��Ǥ��� FOUND���Ф��ƹԤ�줿���Ƥ��ѹ��ϡ����ߤδؿ��ˤΤ߱ƶ����ޤ���
���⤷�ʤ��ץ졼���ۥ��ʸ��ͭ�Ѥˤʤ뤳�Ȥ�����ޤ��� �㤨�С�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�Ǥ�̵���Ҥ�ʸ�����Ĥ���Ƥ��ޤ���