Comencemos con sus opciones:
- pl/pgsql y sql
- pl/perl, pl/pythonu y pl/tcl
- Otros pls
Estas categorías principales tienen diferencias en fortalezas y debilidades. También tienen diferencias en cómo haces las cosas. Una de las grandes debilidades de los pls externos como pl/ruby es que si no se les da mantenimiento, es posible que tengas un problema más adelante.
PL/PGSQL y SQL
En estos casos, probablemente pueda expresar sus cambios como una consulta SQL con una expresión de tabla común recursiva. Luego puede usar sql o, si necesita un poco de soporte de procedimiento, agréguelo y use pl/pgsql. Por lo general, así es como me acerco a esto.
PL/Perl, PL/TCL y PL/PythonU
También puede portar su código Ruby a Python o Perl y usar las variaciones PL de estos lenguajes. Estos PL son ampliamente utilizados y mantenidos como parte de la distribución central de PostgreSQL. Ellos no se van. Esto le permitiría una mayor transparencia de cómo se mueve la lógica.
Una limitación significativa de PL/Python es que no tiene un modo de confianza, y un problema con el que se encontrará con pl/perl es que el modo de confianza significa que no hay acceso a módulos externos.