Vamos começar com suas opções:
- pl/pgsql e sql
- pl/perl, pl/pythonu e pl/tcl
- Outros por favor
Essas categorias principais têm diferenças em pontos fortes e fracos. Eles também têm diferenças em como você lida com as coisas. Uma das grandes fraquezas de pls externos como pl/ruby é que se eles não forem mantidos, você pode ter um problema mais tarde.
PL/PGSQL e SQL
Nesses casos, você provavelmente pode expressar suas alterações como uma consulta SQL com expressão de tabela comum recursiva. Então você pode usar sql ou, se precisar de algum suporte processual leve, adicione isso e use pl/pgsql. Geralmente é assim que eu abordo isso.
PL/Perl, PL/TCL e PL/PythonU
Você também pode portar seu código Ruby para Python ou Perl e usar as variações PL dessas linguagens. Esses PLs são amplamente usados e mantidos como parte da distribuição principal do PostgreSQL. Eles não vão embora. Isso permitiria uma melhor transparência de como a lógica se move.
Uma limitação significativa do PL/Python é que ele não tem modo confiável, e um problema que você encontrará com o pl/perl é que o modo confiável significa que não há acesso a módulos externos.