PL/pgSQL is a loadable procedural language for the PostgreSQL
database system. The design goals of PL/pgSQL were to create a
loadable procedural language that can be used to create
functions and trigger procedures, adds control structures to the
SQL language, can perform complex computations, inherits all
user-defined types, functions, and operators, can be defined to
be trusted by the server, is easy to use. Except for
input/output conversion and calculation functions for user-
defined types, anything that can be defined in C language
functions can also be done with PL/pgSQL. For example, it is
possible to create complex conditional computation functions and
later use them to define operators or use them in index
expressions.