Vamos a abordar un tema muy importante para el desarrollo de cualquier proyecto, en este caso visto desde la parte de las base de datos y es precisamente el uso los procedimientos almacenados, en caso de postgreSQL las funciones, en otras palabras vamos a utilizar el lenguaje procedural PL/pgSQL de PostgreSQL en la resolución de problemas.
Ventajas
- Cuando la ejecución del procedimiento ocurre en el servidor, es probable que aumente el rendimiento de nuestra aplicación al no tenerse que mandar datos entre el cliente y el servidor, y no tener que procesar resultados intermedios en el cliente para obtener el resultado final.
- Al tener la lógica de la aplicación implementada en la Base de datos no tendremos que implantarla en los clientes, con el significativo ahorro de líneas de código redundante.
- Si tenemos diferentes tipos de clientes implementados en diferentes sistemas ó lenguajes de programación y a la vez accediendo a la misma base de datos, no tendremos que programar la misma lógica en todos, al estar disponible en la base de datos la solución de nuestro problema.
Los procedimientos almacenados (stored procedures) en PostgreSQL se les llaman funciones, las cuales están almacenadas en la base de datos y listas para ser usadas. En postgreSQL se utiliza para la programación de funciones los lenguajes procedurales.
Lenguajes procedurales
PL/Perl: Es un lenguaje de programación imperativo y permite más control que el álgebra relacional de SQL.
PL/Python: Utiliza el entorno de ejecución de Python restringido. Funciona como un lenguaje de confianza.
PL/Java: Es un módulo libre que trae procedimientos almacenados, disparadores, y funciones para PostgreSQL backend a través de la interfaz estándar JDBC.
Y el PL/pgSQL es muy parecido al lenguaje PL/SQL utilizado por Oracle, es fácil de aprender, potente y siempre está disponible. Es un lenguaje estructurado en bloques y posee como mínimo un bloque principal en el procedimiento almacenado y dentro de este pueden existir sub-bloques. El mismo se puede utilizar para crear las funciones y disparadores (triggers), este último lo explicaremos en próximos artículos.
Además con el PL/PGSQL se pueden añadir estructuras de control SQL, realizar cálculos complejos entre otra serie de operaciones muy importantes para la solución de nuestros problemas.
A continuación vamos a pasar a ver la estructura de una función para entenderla mejor:
CREATE [OR REPLACE] FUNCTION
nombre_funcion([[ argmodo ][ argnombre ] argtipo [,...]])
RETURNS tipo AS $$
[ DECLARE ]
[ declaraciones de variables ]
BEGIN
Codigo
END;
$$ LANGUAJE plpgsql
Es importante señalar que los comentarios se definen /* mi comentario */ y los tipos de datos se declaran por ejemplo id INTEGER;
De todas maneras vamos a cerrar este artículo con un ejemplo muy sencillo pero que ilustra claramente la sintaxis que acabamos de poner.
CREATE FUNCTION sumar (x integer, y integer) RETURN INTEGER AS $$
Declare
Resultado integer;
BEGIN
Resultado:=x+y;
Return resultado;
END
$$ LANGUAJE plpgsql
Las funciones se pueden complejizar tanto como queramos en nuestras soluciones, los exhortamos a que continúen abordando sobre estos temas tan importantes, comiencen a utilizar consultas dentro de las funciones y a practicar el funcionamiento de las mismas.
No hay comentarios:
Publicar un comentario