Para quienes por alguna razón necesitan ejecutar comandos de la consola desde procedimientos almacenados o triggers en postgresql esta este lenguaje PLSH para realizar estas tareas.

 

A mi me sirvió ya que necesitaba enviar información de un servidor a otro cifrada con pgp y la desencripto al momento de guardarla en la base.

 

Si utilizamos debian lo podremos hacer asi:

Verificar si tenemos el paquete:

sudo apt-cache search postgres | grep sh

postgresql-8.4-plsh – PL/sh procedural language for PostgreSQL 8.4

Instalar el paquete:

sudo apt-get install postgresql-8.4-plsh

Instalar el lenguaje en el gestor de la base de datos:

CREATE FUNCTION pg_catalog.plsh_handler() RETURNS language_handler
AS ‘/usr/lib/postgresql/8.4/lib/pgplsh.so’
LANGUAGE C;

CREATE FUNCTION pg_catalog.plsh_validator(oid) RETURNS void
AS ‘/usr/lib/postgresql/8.4/lib/pgplsh.so’
LANGUAGE C;

CREATE LANGUAGE plsh
HANDLER pg_catalog.plsh_handler
VALIDATOR pg_catalog.plsh_validator;

Ahora que ya creamos el lenguaje en el gestor, podremos ejecutar todas las funciones que necesitamos interactuando con la consola como si fuera un script cualquiera del bash.

Para mayor información:

Anuncios