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.