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.