Ejecutar un procedimiento almacenado de PostgreSQL desde Access puede hacerse usando VBA o de una forma un poco más rebuscada, aprovechando la vinculación de servidores que incluye Access desde su versión 2000. La vinculación permite conectarse a través de ODBC a múltiples motores de base de datos con la finalidad de tratar tablas y vistas de los servidores remotos como si fueran parte de Access. Esto nos permite ejecutar operaciones DML (Select, update, insert) sobre los objetos del motor origen. para este artículo aprovecharemos esta característica para ejecutar un procedimiento almacenado de PostgreSQL.
*** Importante. Este ejemplo es muy simple pero brinda la base para poder ejecutar procedimientos almacenados mucho más elaborados y con parámetros.
En esta primera parte vamos a ejecutar un procedimiento almacenado usando la vinculación. Para ello usaremos la base de datos Booktown que aprendimos a instalar en este artículo: Instalar base de datos de prueba booktown. Lo primero que haremos será crear un procedimiento almacenado que nos devuelva los libros de un autor en particular. Si no sabes crear procedimientos almacenados en PostgreSQL te recomiendo leer el artículo Procedimientos almacenados en PostgreSql. El código del procedimiento almacenado que nos devuelve los libros de un determinado autor es el siguiente:
CREATE OR REPLACE FUNCTION Get_Books_By_Author ( OUT Cid integer, OUT Ctitle text, OUT Cauthor_id integer ) RETURNS setof record AS $BODY$ begin return query SELECT id, title, author_id FROM booktown.public.books where author_id = 7805; return; end; $BODY$ LANGUAGE 'plpgsql';
Al ejecutarlo nos devolverá lo siguiente:
Ahora lo que haremos será crear una vista con el resultado del procedimiento almacenado, para ello ejecutaremos la siguiente instrucción:
CREATE OR REPLACE VIEW Books_By_Author AS SELECT cid id, ctitle title, cauthor_id author_id FROM booktown.public.Get_Books_By_Author()
Si lo deseamos podremos ver la vista creada en nuestro cliente de PostgreSQL:
Una vez creada la vista vamos a vincular nuestro servidor PostgreSQL en Access tal y como vimos en el artículo Vincular PostgreSql y Mysql en Access usando ODBC. Así que creamos un nuevo archivo de base de datos y vinculamos la vista recién creada:
Y de esta manera podemos ejecutar nuestros procedimientos almacenados desde Access aprovechando la vinculación de servidores. Ejecutamos la siguiente consulta en Access:
SELECT * FROM public_books_by_author;
y obtendremos lo siguiente:
Agregamos un nuevo libro en PostgreSQL
y al ejecutar de nuevo la consulta en Access obtendremos la vista actualizada:
En resumen, aprovechando la vinculación de servidores es posible ejecutar procedimientos almacenados de PostgreSQL desde Access. Aclaro nuevamente que este ejemplo es muy básico pero puede servir de idea para elaborar un procedimiento almacenado mucho más elaborado.
Deja un comentario