���ᤪ��Ӽ���Ǥϡ�����Ū��PL/pgSQL�Dz�ᤵ��롢���٤Ƥμ����ʸ�ˤĤ����������ޤ��� �����μ����ʸ�Ȥ���ǧ����ʤ���Τ����ơ�SQL���ޥ�ɤǤ���Ȳ��ꤵ�졢(����ʸ�ǻ��Ѥ����PL/pgSQL�ѿ������������������)�ᥤ��ǡ����١����������������¹Ԥ���ޤ��� ���äơ��㤨�С�INSERT��UPDATE��DELETE SQL���ޥ�ɤϡ�PL/pgSQL ��ʸ�Ȥߤʤ����Ȥ��Ǥ��ޤ����������������ǤϤ����ˤĤ��Ƥϸ��ڤ��ޤ���
�ͤ��ѿ����⤷���Ϲ�/�쥳���ɥե�����ɤ�����������ϰʲ��Τ褦�˵��Ҥ��ޤ���
identifier := expression;
��Ҥ����̤ꡢ���Τ褦��ʸ��ˤ��뼰�ϡ��ᥤ��ǡ����١�����������������SELECT SQL���ޥ�ɤˤ�ä�ɾ������ޤ��� ����1�Ĥ��ͤ��������ʤ���Фʤ�ޤ���
���η�̥ǡ��������ѿ��Υǡ������˰��פ��ʤ���硢�ޤ��ϡ��ѿ���(char(20)�Τ褦��)������礭��/���٤���ľ�硢��̤��ͤ� PL/pgSQL���ץ�ˤ�äơ���̤η��ν��ϴؿ����ѿ��η������ϴؿ�����Ѥ��ư���Ū���Ѵ�����ޤ��� ����ˤ�ꡢ����ͤ�ʸ������������ϴؿ��Ǽ����դ��뤳�Ȥ��Ǥ��ʤ����ˡ����ϴؿ��ˤ����Ƽ¹Ի����顼��ȯ�������ǽ�������뤳�Ȥ����դ��Ƥ���������
��
user_id := 20; tax := subtotal * 0.06;
ʣ��������(������1�ԤΤߤ�)SELECT���ޥ�ɤη�̤ϡ��쥳�����ѿ����Է����ѿ����������ѿ��Υꥹ�Ȥ��������뤳�Ȥ��Ǥ��ޤ��� ����ϡ��ʲ��ˤ�äƹԤ��ޤ���
SELECT INTO target select_expressions FROM ...;
�����ǡ�target�ϥ쥳�����ѿ������ѿ������뤤�ϡ�ñ����ѿ��ȥ쥳����/���ѿ��Υե�����ɤ�ޤǶ��ڤä��ꥹ�ȤǤ��� select_expressions�ȥ��ޥ�ɤλĤ����ʬ���̾��SQL��Ʊ���Ǥ���
����ϡ�INTO���оݤϿ��������������ơ��֥�Ǥ���Ȥ�����PostgreSQL���̾��SELECT INTO�μ����Ȥ��礭���ۤʤ�ޤ��� PL/pgSQL �ؿ�������SELECT�η�̤���ơ��֥��������������ϡ�CREATE TABLE ... AS SELECT��ʸ����Ѥ��Ʋ�������
�Ԥޤ����ѿ��ꥹ�Ȥ��оݤ˻��Ѥ��줿��硢���줿�ͤ����Τ��оݤι�¤�˰��פ��ʤ���Фʤ�ޤ��� ����ʤ���С��¹Ի����顼��ȯ�����ޤ��� �쥳�����ѿ����оݤξ��ϡ���ưŪ���䤤��碌��̤���ιԷ��˼�ưŪ�˼��Ȥ����ꤷ�ޤ���
INTO���ʳ��ϡ�����SELECTʸ���̾��SELECT SQL���ޥ�ɤ�Ʊ��Ǥ��ꡢSELECT�����Ƥε�ǽ����Ѥ��뤳�Ȥ��Ǥ��ޤ���
�䤤��碌���Ԥ��֤��ʤ���硢NULL�ͤ��оݤ���������ޤ��� �䤤��碌��ʣ���ιԤ��֤���硢�ǽ�ιԤ��оݤ��������졢�Ĥ���˴�����ޤ��� ("�ǽ�ι�"��ORDER BY����Ѥ��Ƥ��ʤ��¤괰�������Τˤʤ�ʤ����Ȥ����դ��Ʋ�������)
���ߡ�INTO���SELECTʸ�ΤۤȤ��Ǥ�դξ��˵��Ҥ��뤳�Ȥ��Ǥ��ޤ�������Ǽ������̤��SELECT������ɤ�ľ��˵��Ҥ��뤳�Ȥ�侩���ޤ��� ����ΥС�������PL/pgSQL�Ǥϡ�INTO��Ҥ���������¤��ä����뤫�⤷��ޤ���
SELECT INTOʸ��ľ���FOUND����Ѥ��뤳�Ȥˤ�ꡢ�������������Ԥʤ�줿���ɤ���(�Ĥޤꡢ�䤤��碌�ˤ�äƾ��ʤ��Ȥ� 1 �Ԥ��֤��줿���ɤ���)���ǧ���뤳�Ȥ��Ǥ��ޤ��� �ʲ�������ޤ���
SELECT INTO myrec * FROM emp WHERE empname = myname; IF NOT FOUND THEN RAISE EXCEPTION ''employee % not found'', myname; END IF;
IS NULL������Ѥ��ơ��쥳���ɤ⤷���ϹԷ�̤�NULL���ɤ��������뤳�Ȥ��Ǥ��ޤ��� ��������¾�ιԤ�¸�ߤ��˴����줿���ɤ�����Ƚ�Ǥ�����ˡ��¸�ߤ��ʤ����Ȥ����դ��Ʋ������� �ʲ��ˡ��Ԥ������֤���ʤ��ä���������ޤ���
DECLARE users_rec RECORD; full_name varchar; BEGIN SELECT INTO users_rec * FROM users WHERE user_id=3; IF users_rec.homepage IS NULL THEN -- �桼����homepage�����Ϥʤ��ä��Τ�"https://"���֤��� RETURN ''http://''; END IF; END;
��̤�ɬ�פȤ��ʤ��䤤��碌�估��ɾ����Ԥ��������Ȥ�����ޤ�(ľ���������̤�ɬ�פ��ʤ��Ƥ⡢����Ū���������̤˰�̣�Ф��ؿ��θƤӽФ���ŵ��Ū)�� ����� PL/pgSQL�ǹԤ��ˤϡ�PERFORMʸ����Ѥ��Ʋ�������
PERFORM query;
����ϡ�SELECTʸ�Ǥ���ɬ�פ�����query��¹Ԥ������η�̤��˴����ޤ��� PL/pgSQL�ѿ��ϡ��̾��̤��䤤��碌����֤��������ޤ��� �ޤ����ü���ѿ��Ǥ���FOUND�ϡ��䤤��碌��̤�1�ԤǤ��������줿���Ͽ������ꤵ�졢��������ʤ����ϵ������ꤵ��ޤ���
����: INTO�������ʤ�SELECT�Ǥ��η�̤�̤������Ȥ��Ǥ���ȹͤ��뤫�⤷��ޤ����������Ǥϡ������Ԥ���ˡ��PERFORM��������ޤ���
�ʲ�������ޤ���
PERFORM create_mv(''cs_session_page_requests_mv'', my_query);
PL/pgSQL�ؿ��������ǡ�ưŪ���ޥ�ɡ��Ĥޤ�¹Ԥ����٤��̤Υơ��֥���̤Υǡ���������Ѥ��륳�ޥ�ɤ�Ԥ������Ȥ������Ȥ��褯����Ǥ��礦�� PL/pgSQL���̾�Ԥ����ޥ�ɤηײ�Υ���å���Ϥ��Τ褦�ʾ����Ǥ�ư��ޤ��� ���μ�����������ˡ��ʲ���EXECUTEʸ���Ѱդ���Ƥ��ޤ���
EXECUTE command-string;
�����ǡ�command-string�ϡ��¹Ԥ���륳�ޥ�ɤ����(text����)ʸ�����Ϳ���뼰�Ǥ��� ����ʸ�����SQL����ˤ��Τޤ��Ϥ���ޤ���
���Υ��ޥ��ʸ�����ؤ�PL/pgSQL�ѿ����ִ��ϹԤ��ʤ����Ȥˤϡ��ä����դ��Ʋ������� �ѿ����ͤϡ����ޥ��ʸ��������������������ޤʤ���Фʤ�ޤ���
ưŪ���ޥ�ɤ�Ԥ�����PL/pgSQL�Ǥ�ñ�������������פ��ʤ���Фʤ�ޤ��� ��37.2.1�γ��פȤ��뤳�Ȥ�����Ȥμ�����ˤʤ뤫�⤷��ޤ���
PL/pgSQL�ˤ�����¾�����ƤΥ��ޥ�ɤȤϰۤʤꡢEXECUTE�ˤ�äƼ¹Ԥ���륳�ޥ�ɤϡ����å�����ͭ����������٤�����ᡢ��¸�����櫓�ǤϤ���ޤ��� ����ˡ����ޥ�ɤ�ʸ���¹Ԥ������˽�������ޤ��� ���ޥ��ʸ����ϡ��ѿ��ơ��֥����˵ڤܤ�Ư����¹Ԥ��뤿��ˡ��ؿ�������ưŪ�˺������뤳�Ȥ��Ǥ��ޤ���
SELECT�䤤��碌�Τ���η�̤�EXECUTE�ˤ�äƼΤƤ��ޤ��� �ޤ���SELECT INTO��EXECUTE�Ǥϸ��ߥ��ݡ��Ȥ���ޤ��� ��̤�ưŪ�˺������줿SELECT�����̤�ȴ���Ф���ˡ��2�Ĥ���ޤ��� 1�Ĥ���37.7.4�ǽҤ٤�FOR-IN-EXECUTE����Ѥ��뤳�ȤǤ��� �⤦1�Ĥ���37.8.2�ǽҤ٤�OPEN-FOR-EXECUTE�ˤ�륫���������Ѥ��뤳�ȤǤ���
�ʲ�������ޤ���
EXECUTE ''UPDATE tbl SET '' || quote_ident(colname) || '' = '' || quote_literal(newvalue) || '' WHERE ...'';
������ϡ�quote_ident(text)��quote_literal(text)�ؿ��λ�����ˡ���Ƥ��ޤ��� �����Τ��ᡢ��ȥơ��֥�μ��̻Ҥ�ޤ�Ǥ����ѿ���quote_ident()�ؿ����̤�ʤ���Ф����ޤ��� ưŪ�ʹ��ۤ���륳�ޥ����ǡ���ƥ��ʸ����Ȥʤ�٤��ͤ�ޤ�Ǥ����ѿ���quote_literal()�ؿ����̤�ʤ���Ф����ޤ��� ξ���Ȥ⡢Ŭ�ڤʽ�����Ԥ������Ϥ��줿�ƥ����Ȥ�ñ�������⤷������Ű�����dz�ꡢ�ü�ʸ���٤�Ŭ�ڤ˥��������פ������������Τ��֤��ޤ���
�ʲ���ưŪ�䤤��碌��EXECUTE���礭�����Ǥ���
CREATE FUNCTION cs_update_referrer_type_proc() RETURNS integer AS ' DECLARE referrer_keys RECORD; -- FOR�ǻ��Ѥ�������ѥ쥳���ɤ���� a_output varchar(4000); BEGIN a_output := ''CREATE FUNCTION cs_find_referrer_type(varchar, varchar, varchar) RETURNS varchar AS '''' DECLARE v_host ALIAS FOR $1; v_domain ALIAS FOR $2; v_url ALIAS FOR $3; BEGIN ''; -- FOR <record> ��ʸ����Ѥ��� FOR �롼�פǡ��䤤��碌�η�� -- ��ɤΤ褦�˥�����Ƥ��뤫�����դ��Ʋ������� FOR referrer_keys IN SELECT * FROM cs_referrer_keys ORDER BY try_order LOOP a_output := a_output || '' IF v_'' || referrer_keys.kind || '' LIKE '''''''''' || referrer_keys.key_string || '''''''''' THEN RETURN '''''' || referrer_keys.referrer_type || ''''''; END IF;''; END LOOP; a_output := a_output || '' RETURN NULL; END; '''' LANGUAGE plpgsql;''; EXECUTE a_output; END; ' LANGUAGE plpgsql;
���ޥ�ɤθ��̤�Ƚ�Ǥ���ˤϡ������Ĥ���ˡ������ޤ��� �ǽ����ˡ�ϡ��ʲ��Τ褦�ʷ�����GET DIAGNOSTICS����Ѥ�����ˡ�Ǥ���
GET DIAGNOSTICS variable = item [ , ... ] ;
���Υ��ޥ�ɤˤ�äơ������ƥॹ�ơ�����������������Ф����Ȥ��Ǥ��ޤ��� ��item�ϡ����ꤵ�줿�ѿ��˳�����Ƥ�줿�����ͤ��̤��뤿��Υ�����ɤǤ�(����ϼ����Ȥ뤿����������ǡ������Ǥʤ���Фʤ�ޤ���)�� �����Ѳ�ǽ�ʥ��ơ��������ܤϡ�ROW_COUNT��RESULT_OID��2�ĤǤ��� ROW_COUNT�ϡ��Ǹ��SQL������������줿SQL���ޥ�ɤˤ�äƽ������줿�Կ����ޤ��� RESULT_OID�ϡ��Ǥ�Ƕ��SQL���ޥ�ɤˤ�ä��������줿�Ǹ�ιԤ�OID�Ǥ��� RESULT_OID��INSERT���ޥ�ɤθ�ǤΤ�ͭ�դǤ��뤳�Ȥ����դ��Ʋ�������
�ʲ�������ޤ���
GET DIAGNOSTICS integer_var = ROW_COUNT;
2���ܤΥ��ޥ�ɤθ��̤�Ƚ�Ǥ�����ˡ�ϡ�FOUND�Ȥ���boolean�����ü���ѿ�������å����뤳�ȤǤ��� PL/pgSQL�γƴؿ���ǻ��Ѥ����ݡ�FOUND�Ϻǽ�ϵ������ꤵ��Ƥ��ޤ��� �ʲ��Τ褦�ˡ����줾���ʸ�μ���ˤ�ä����꤬�ѹ�����ޤ���
SELECT INTOʸ�ϡ��Ԥ��֤��줿���Ͽ����֤���ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
PERFORMʸ�ϡ��Ԥ�����(�˴�)���줿���Ͽ�����������ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
UPDATE��INSERT�������DELETEʸ�ϡ����ʤ��Ȥ�1�Ԥ��ƶ�����������Ͽ��������ƶ�������ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
FETCHʸ�ϡ��Ԥ��֤��줿���Ͽ��������֤���ʤ��ä����ϵ���FOUND�����ꤷ�ޤ���
FORʸ�ϡ�1��ʾ巫���֤����Ԥʤ�줿���Ͽ����Ԥʤ��ʤ��ä����ϵ���FOUND�����ꤷ�ޤ��� ����ϡ�3���FORʸ���٤�(����FOR�롼�ס��쥳���ɥ��å�FOR�롼�ס�ưŪ�쥳���ɥ��å�FOR�롼��)�����ƤϤޤ�ޤ��� FOUND �ϡ�FOR�롼�פ���λ�����ݤˤΤ����ꤵ��ޤ��� �Ĥޤꡢ�¹ԥ롼����Ǥϡ�FORʸ�ˤ�ä�FOUND���ѹ�����ޤ��� ���������롼���������¾�����ʸ��¹Ԥ��뤳�Ȥˤ�äơ��ѹ�����뤫�⤷��ޤ���
FOUND�ϡ����������ѿ��Ǥ��� FOUND���Ф��ƹԤʤ�줿���Ƥ��ѹ��ϡ����ߤ�PL/pgSQL�ؿ��ˤΤ߱ƶ����ޤ���