PostgreSQL поддерживает больше языков долгое время - изначально существовали функции на языке SQL.Этот язык отлично подходит для простых задач, может использоваться в качестве макроса - некоторые простые случаи являются встроенными (и тогда издержки на перенос кода в функцию равны нулю).И кто-нибудь знает SQL.
PLpgSQL основан на PL / SQL Oracle - это замечательные процедурные языки со встроенным SQL.Многие знают PL / SQL и могут быстро работать с PL / pgSQL.
PLPerl, PLPerlu, PLPython - эти языки являются языками для внешних процедур.Эти языки являются общими - не оптимизированы для использования внутри баз данных, но могут выполнять очень много других задач или могут использовать довольно широкий набор библиотек (хотя это использование может быть немного опасным) - «u» в конце означает «ненадежный».
Чаще всего разработчики PostgreSQL используют SQL для однострочных функций (это как макроязыки) и PLpgSQL для манипулирования данными.Языки для внешних процедур используются исключительно - я люблю использовать Python для разбора XML, например.