35.3. PL/pgSQL�Ľṹ

PL/pgSQL��һ�ֿ�ṹ�����ԡ� ��������������ı���������һ������ һ����������ķ������壺

[ <<label>> ]
[ DECLARE
    declarations ]
BEGIN
    statements
END;

���е�ÿ��������ÿ����䶼����һ���ֺ���ֹ�ģ� ���һ���ӿ�������һ�������ô END ��������и��ֺţ����������� ������������������� END ���Բ�Ҫ����ֺš�

���йؼ��ֺͱ�ʶ���������û�ʹ�Сд�ķ�ʽ��д����ʶ����������ת����Сд�ַ������DZ�˫���Ű�Χ��

�� PL/pgSQL �����������͵�ע�͡�һ��˫���ۺţ�--�� ����һ����չ�����н�β��ע�͡�һ�� /* ����һ����ע�ͣ�һֱ��չ����һ�� */ �ij��֡� ��ע�Ͳ���Ƕ�ף�����˫���ۺ�ע�Ϳ��԰�Χ�ڿ�ע�����棬����˫���ۺſ�������һ����ע�ͷָ��� /* �� */��

��һ�������������κ���䶼������һ���ӿ��� �ӿ���������߼�������߰ѱ����ֲ���Ϊ������һ���Ƚ�С������顣

������ǰ��������Σ�declarations section���ﶨ��ı�����ÿ�ν�������ʱ����ʼ��Ϊ���ǵ�ȱʡֵ�� ������ÿ�κ�������ʱ��ʼ��һ�Ρ����磺

CREATE FUNCTION somefunc() RETURNS integer AS $$
DECLARE
   quantity integer := 30;
BEGIN
   RAISE NOTICE 'Quantity here is %', quantity;  -- ������������� 30
   quantity := 50;
   --
   -- ����һ���ӿ�
   --
   DECLARE
      quantity integer := 80;
   BEGIN
      RAISE NOTICE 'Quantity here is %', quantity;  -- ������������� 80
   END;

   RAISE NOTICE 'Quantity here is %', quantity;  -- ������������� 50

   RETURN quantity;
END;
$$ LANGUAGE plpgsql;

����һ����Ҫ��PL/pgSQL������������� BEGIN/END ������������Ƶ����ݿ��������ˡ� PL/pgSQL�� BEGIN/END ֻ�����ڷ��飨��ע���� C ��� {}���� ���Dz��Ὺʼ�ͽ���һ������ �����ʹ���������������һ������������������������ִ�� — �����޷���ʼ�����ύ������Ϊ PostgreSQL û��Ƕ������ ������һ������ EXCEPTION �Ӿ�Ŀ�ʵ�����γ�һ���������������ڲ�Ӱ��������������»ع��� ���������Ϣ����� Section 35.7.5��