El lenguaje PL/pgSQL es no hace diferencia entre mayúsculas y minúsculas. Todas las palabras reservadas e identificadores pueden aparecer en una mezcla de mayúsculas y minúsculas.
PL/pgSQL es un lenguaje por bloques. Se define un bloque como:
[<<etiqueta>>] [DECLARE declaraciones] BEGIN aserciones END;
Puede haber cualquier número de bloques anidados en la sección de aserciones de un bloque. Los bloques anidados pueden ser utilizados para ocultar variables de la parte exterior del bloque de aserciones. Las variables declaradas en la sección de declaraciones que precede a un bloque son inicializadas al valor por omisión cada vez que el control pasa al interior del bloque, no solamente cada vez que la función es invocada.
Es importante no confundir la estructura de control BEGIN
...
END
para agrupar aserciones de PL/pgSQL con los comandos del
DBMS para control de transacciones. Las funciones y los triggers no
pueden comenzar o hacer commit
de transacciones y PostgreSQL no
tiene transacciones anidadas.