Access – Ejecutar procedimientos almacenados de PostgreSql (Con vistas)

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:

Pantallazo-Query - booktown

 

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:

Pantallazo-pgAdmin III-1

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:

view_access_linked_server

 

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:

view_access_linked_server_2

 

Agregamos un nuevo libro en PostgreSQL

new_data

 

y al ejecutar de nuevo la consulta en Access obtendremos la vista actualizada:

access_data

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.

 

Sé el primero en comentar

Deja un comentario