���湽¤�Ϥ����餯PL/pgSQL�Τ�äȤ�ͭ��(���Ľ���)����ʬ�Ǥ���PL/pgSQL �����湽¤����Ѥ��ơ� PostgreSQL �Υǡ��������˽��𡢶��Ϥ����뤳�Ȥ��Ǥ��ޤ���
RETURN expression;
�ؿ��Ͻ�λ����expression ���ͤ���̤Υ��������塼�����֤���ޤ������μ��η�̤ϼ�ưŪ�˴ؿ������������ͷ��˥��㥹�Ȥ���ޤ���
�ؿ�������ͤ�̤����Ȥ������ޤޤˤ��뤳�ȤϤǤ��ޤ������椬�ؿ��κǾ�̤���Ͽ�ν���ޤǡ�RETURNʸ���ʤ����֤�ã�����Ȥ����¹Ի����顼��ȯ�����ޤ���
IF ʸ�Ϥ�����˴�Ť��ƥ��ޥ�ɤ�¹Ԥ����ޤ��� PL/pgSQL �� IF�η����ˤϡ�IF-THEN, IF-THEN-ELSE,IF-THEN-ELSE IF, and IF-THEN-ELSIF-THEN-ELSE �Ȥ���4�Ĥ�����ޤ���
IF boolean-expression THEN statements END IF;
IF-THEN ʸ�ϡ��Ǥ�ñ��� IF �η����Ǥ���THEN �� END IF�δ֤�ʸ�� ��郎���ξ��˼¹Ԥ���ޤ�������ʤ���Ф��������Ф���ޤ���
IF v_user_id <> 0 THEN UPDATE users SET email = v_email WHERE user_id = v_user_id; END IF;
IF boolean-expression THEN statements ELSE statements END IF;
IF-THEN-ELSE ʸ�� IF-THEN �˲ä������ɾ�������ξ��˼¹Ԥ��٤�ʸ�ν������ꤵ���뤳�Ȥ��Ǥ��ޤ���
IF parentid IS NULL or parentid = '''' THEN return fullname; ELSE return hp_true_filename(parentid) || ''/'' || fullname; END IF; IF v_count > 0 THEN INSERT INTO users_count(count) VALUES(v_count); return ''t''; ELSE return ''f''; END IF;
�ʲ�����Τ褦�� IF ʸ������Ҥˤ��뤳�Ȥ��Ǥ��ޤ���
IF demo_row.sex = ''m'' THEN pretty_sex := ''man''; ELSE IF demo_row.sex = ''f'' THEN pretty_sex := ''woman''; END IF; END IF;
���η�������Ѥ����硢�ºݤ� IF ʸ��¦�� IF ʸ�� ELSE ����ʬ����¦������Ҥˤ��Ƥ��ޤ������äơ�����Ҥˤ��� IF ��� 1 �Ĥ�END IF ʸ�������οƤȤʤ� IF-ELSE ��1�Ĥ�END IF ʸ��ɬ�פǤ�������ˤ�������ư��Ǥ��ޤ������������٤����䤬¿���������Ĺ���餷���ʤ�ޤ���
IF boolean-expression THEN statements [ ELSIF boolean-expression THEN statements [ ELSIF boolean-expression THEN statements ...]] [ ELSE statements ] END IF;
IF-THEN-ELSIF-ELSE �ϡ�����ʸ��¿�������ؼ��ʤ�������Υ����å��ˡ������������ˡ�����ޤ������Ȥ��Ƥϡ�IF-THEN-ELSE-IF-THEN ���ޥ�ɤ�����Ҥˤ�����Τ�Ʊ���Ǥ�����ɬ�פ� END IF ��1�Ĥ����Ǥ���
�ʲ�������ޤ���
IF number = 0 THEN result := ''zero''; ELSIF number > 0 THEN result := ''positive''; ELSIF number < 0 THEN result := ''negative''; ELSE -- hmm, the only other possibility is that number IS NULL result := ''NULL''; END IF;
�Ǹ�� ELSE ��Ͼ�ά��ǽ�Ǥ���
LOOP��EXIT��WHILE��FOR ʸ����Ѥ��ơ�PL/pgSQL �ؿ��ǡ����ޥ�ɷ����֤����Ȥ��Ǥ��ޤ���
[<<label>>]
LOOP
statements
END LOOP;
LOOP �ϡ�EXITʸ�ޤ���RETURN ʸ�ˤ�äƽ�λ�����ޤ�̵�¤˷����֤���롢���̵���Υ롼�פ�������ޤ�����٥륪�ץ����ϡ�����Ҿ��롼�����EXIT ʸ�ǡ��ɤΥ�٥������Ҥ���λ���뤫����ꤹ�뤿��˻��Ѥ���ޤ���
EXIT [ label ] [ WHEN expression ];
label �����ꤵ��ʤ���硢�Ǥ���¦�Υ롼�פ餻��END LOOP �μ���ʸ�����θ�˼¹Ԥ���ޤ��� label �����ꤵ�줿��硢����ϸ��ߤΥ롼�ס��⤷���ϡ�����Ҥˤʤä��롼�פ�֥��å��γ�¦�Υ�٥�Υ�٥�Ǥ���ɬ�פ�����ޤ������θ塢��̾���줿�롼�פޤ��ϥ֥��å��餻�����Υ롼�פޤ��ϥ֥��å����б����� END �μ���ʸ�������ܤ��ޤ���
WHEN �������硢���ꤵ�줿��郎���ξ��Τߥ롼�פν�λ��������ޤ�������ʤ���С�EXIT �θ�ιԤ����椬�ܤ�ޤ���
Examples:
LOOP -- ���餫�α黻 IF count > 0 THEN EXIT; -- �롼�פν�λ END IF; END LOOP; LOOP -- ���餫�α黻 EXIT WHEN count > 0; END LOOP; BEGIN -- ���餫�α黻 IF stocks > 100000 THEN EXIT; -- �����Ǥ���LOOP�γ�¦�Ǥ� EXIT �ϻ��ѤǤ��ޤ��� END IF; END;
[<<label>>]
WHILE expression LOOP
statements
END LOOP;
WHILE ʸ�Ͼ�P��ɾ�������Ǥ���֡�ʸ���¤Ӥ��֤��ޤ������ϡ��롼�����Τ��������ˤΤߥ����å�����ޤ���
WHILE amount_owed > 0 AND gift_certificate_balance > 0 LOOP -- �����DZ黻���Ĥ��Ԥ��ޤ��� END LOOP; WHILE NOT boolean_expression LOOP -- �����DZ黻���Ĥ��Ԥ��ޤ��� END LOOP;
[<<label>>] FOR name IN [ REVERSE ] expression .. expression LOOP statements END LOOP;
���μ����FOR �������ͤ��ϰϤ��֤��롼�פ��������ޤ��� name �ѿ����������Ȥ��Ƽ�ưŪ��������졢�롼�������Τߤ�¸�ߤ��ޤ����ϰϤβ��¡���¤Ȥ���Ϳ������2�Ĥμ��ϥ롼�פ����ä����˰��٤���ɾ������ޤ������֤���ߤ��̾� 1 �Ǥ�����REVERSE �����ꤵ�줿���� -1 �Ȥʤ�ޤ���
����FOR�롼�פ����ʲ��˼����ޤ���
FOR i IN 1..10 LOOP -- �����Ĥ������˵��Ҥ��ޤ��� RAISE NOTICE ''i is %'',i; END LOOP; FOR i IN REVERSE 10..1 LOOP -- �����Ĥ������˵��Ҥ��ޤ��� END LOOP;
�̤μ���� FOR �롼�פ���Ѥ��ơ��䤤��碌�η�̤��֤������Υǡ��������Ȥ��Ǥ��ޤ����ʲ��˹�ʸ���ޤ���
[<<label>>]
FOR record | row IN select_query LOOP
statements
END LOOP;
�쥳���ɤޤ��Ϲ��ѿ��ˤϡ������SELECT�䤤��碌�η�̤Τ��٤ƤιԤ��������졢�ƹԤ��Ф��ƥ롼�����Τ��¹Ԥ���ޤ����ʲ�������ޤ���
CREATE FUNCTION cs_refresh_mviews () RETURNS INTEGER AS ' DECLARE mviews RECORD; BEGIN PERFORM cs_log(''Refreshing materialized views...''); FOR mviews IN SELECT * FROM cs_materialized_views ORDER BY sort_key LOOP -- ������ "mviews" �� cs_materialized_views ��1�ĤΥ쥳���ɤ�����ޤ� PERFORM cs_log(''Refreshing materialized view '' || quote_ident(mviews.mv_name) || ''...''); EXECUTE ''TRUNCATE TABLE '' || quote_ident(mviews.mv_name); EXECUTE ''INSERT INTO '' || quote_ident(mviews.mv_name) || '' '' || mviews.mv_query; END LOOP; PERFORM cs_log(''Done refreshing materialized views.''); RETURN 1; end; ' LANGUAGE 'plpgsql';
���Υ롼�פ� EXIT ʸ�ǽ�λ������硢�Ǹ�˳�����Ƥ�줿�Ԥ��ͤϥ롼�פ�ȴ������Ǥ⥢���������뤳�Ȥ��Ǥ��ޤ���
FOR-IN-EXECUTE ʸ�ϥ쥳�������Τ��֤��⤦��Ĥ���ˡ�Ǥ���
[<<label>>]
FOR record | row IN EXECUTE text_expression LOOP
statements
END LOOP;
����ϡ����Ȥ��� SELECT ʸ��ʸ���ǻ��ꤵ���������������η����Ȼ��Ƥ��ޤ������μ��� FOR �롼�פγƥ���ȥ��ɾ�����졢�Ʒײ褬�Ԥ��ޤ�������ˤ�ꡢ�ץ�����ޤϡ��̾�� EXECUTE ʸ��Ʊ���褦�˻����˷ײ褵�줿�䤤��碌�ˤ���®���ȡ�ưŪ���䤤��碌�λ��Ľ����������뤳�Ȥ��Ǥ��ޤ���
Note: PL/pgSQL �ѡ����ϸ��ߤ���(�������֤����쥳���ɤ��֤����Ȥ���)2����� FOR �롼�פ�FOR �θ�ǻ��ꤵ�����Ū�ѿ����쥳����/���ѿ��Ȥ����������Ƥ��뤫�ɤ����Ƕ��̤��Ƥ��ޤ����⤷�ʤ���С������� FOR �롼�פǤ���Ȳ��ꤷ�ޤ���FOR ���ѿ�̾��ְ㤨���Ȥ��ä�������������λ�������Ϥɤ��餫�Ȥ�������ľ��Ū�ʥ��顼��å�����������������ޤ���