Introducción

Con la presente unidad académica se pretende brindar a los estudiantes los conocimientos teóricos y métodos prácticos para fortalecer las habilidades de programación en la parte baja del motor de bases de datos, tales como: bloques, ciclos, cursores y disparadores.

Es también objetivo fundamental de esta unidad académica profundizar en la sintaxis propia del motor seleccionado de base de datos, es decir, la sintaxis de PostgreSql, para lo cual se desarrollarán las prácticas utilizando una aplicación cliente que permita conectarse al motor directamente. Todo lo anterior desarrollando ejercicios de aplicación directamente sobre el motor de PostgreSql.

El siguiente contenido temático de la unidad académica Programación Avanzada describe los ejes temáticos principales de trabajo y los subtemas que desde su significativo desarrollo se han de trabajar; todo a la luz de cumplir las competencias de la disciplina, el perfil de egresado que busca el programa y el contenido programático.

Propósitos de aprendizaje

Propósito General

Generar técnicas de ejercitamiento avanzado en los estudiantes para la correcta utilización de bloques, funciones, procedimientos almacenados, triggers y cursores en el desarrollo y mantenimiento del rendimiento de una base de datos.

Propósitos Específicos

  • Proporcionar al estudiante los fundamentos conceptuales para la utilización de variables, bloques, estructuras condicionales y ciclos repetitivos en el desarrollo e implementación de bases de datos.
  • Dotar al estudiante de bases teóricas sobre la correcta utilización de la sintaxis para la creación de funciones, triggers y procedimientos almacenados en un SGBD.
  • Transmitir al estudiante las generalidades y técnicas para la correcta implementación de control de errores en el desarrollo de programas dentro de un SGBD.
  • Proporcionar al estudiante conocimientos avanzados para el desarrollo de cursores, manejo de tablas temporales y liberación de recursos.

Sintaxis básica de bloques, variables, estructuras condicionales y ciclos

La presente asignatura, se desarrollará utilizando el motor de bases de datos PostgreSql. PostgreSQL es un motor de base de datos relacional de gran potencia que ha tenido una notable acogida por los desarrolladores, ya que muchas de sus funcionalidades son de uso libre.

El motor de bases de datos PostgreSQL está basado en una arquitectura de tipo cliente servidor, es decir, contiene una aplicación que atiende todas las peticiones realizadas por los diferentes clientes, entre los cuales se destacan pgaccess de entorno gráfico y psql de entorno consola.

En la arquitectura de PostgreSql el proceso postmaster es el encargado de definir y lanzar un nuevo hilo servidor para atender las diferentes solicitudes realizadas por los clientes; se lanzará un servicio por cada cliente. Los trabajos y procesos realizados por un servidor se ejecutan en un sitio llamado “Host” que soporta todas las transacciones de un conjunto de bases de datos; a su vez las aplicaciones clientes pueden acceder desde el mismo PC o desde otro segmento de red a través de una dirección IP que tenga privilegios de conexión.

PL/pgSQL es un lenguaje que viene incluido en el motor de bases de datos y permite escribir y ejecutar sentencias SQL de tipo DDL y DML. Dentro de este lenguaje es posible utilizar las diferentes funciones matemáticas, de fecha, de manejo de caracteres que vienen por defecto en la distribución de PostgreSql. Con este lenguaje también es posible crear funciones propias.

Un beneficio significativo del sistema de gestión de bases de datos PostgSql es que es de uso libre y código abierto. Tiene un sinnúmero de aplicaciones adicionales que pueden ser instaladas y agregadas posteriores a la instalación adicional.

A continuación se brindará elementos prácticos para instalar el sistema de gestión de bases de datos relacional POSTGRESQL, con el fin de poder realizar los ejercicios prácticos desarrollados durante la asignatura.

Sintaxis básica de bloques, variables, estructuras condicionales y ciclos

Estructura pl/pgSql

En el lenguaje PL/pgSQL el programador puede escribir las palabras claves sin tener en cuenta reglas de mayúsculas o minúsculas. Es un lenguaje muy intuitivo, versátil, fácil de manejar y está orientado a bloques.

Dentro de los bloques, las variables pueden ser declaradas en la sección de declaraciones y el motor las inicializa por defecto. Los bloques pueden extenderse tanto como el desarrollador desee.

Formato de Comentarios: Los comentarios en PL/pgSQL pueden realizarse de 2 formas:

  • 2 guiones '--' al comienzo de la sentencia.
  • Comentarios como en lenguaje C estándar ('/*', '*/')

Declaraciones: Para que el compilador no genere error, es importante recordar que en PL/pgSQL toda variable que se use dentro de un bloque anónimo o no, debe ser declarado en la parte inicial, a excepción de aquellas variables que se utilizan como temporales dentro de los ciclos repetitivos.

A continuación, se presenta un ejemplo práctico, donde en un bloque se define un número entero y una variable para calcular su cuadrado. De igual manera, se presenta una práctica sobre Bloques Anónimos con instrucción DO y la creación de los mismos en la herramienta de SQL Editor.

Sintaxis básica de bloques, variables, estructuras condicionales y ciclos

Condicionales, Case y Ciclos

En PostgreSQL podemos encontrar las estructuras condicionales presentes en los diferentes lenguajes de programación. En PostgreSQL se tienen condicionales simples y condicionales compuestos.

Una estructura CASE permite evaluar una variable y realizar determinadas sentencias acordes al valor de dicha variable. Un CASE puede tener anidado otras estructuras CASE con el fin de evaluar diferentes posibilidades en una sola estructura.

En PostgreSql también se pueden utilizar las estructuras repetitivas expresadas como Loop, ciclo While y ciclo For.

A continuación, se muestra un ejemplo práctico de cada una de las estructuras mencionadas en esta pantalla.

Sintaxis básica de bloques, variables, estructuras condicionales y ciclos

Datos de tablas

En este subtema, se muestran las opciones y sentencias básicas para programar bloques con pl/pgSql especialmente para consultar y agrupar información a partir de las tablas creadas en nuestra base de datos.

A continuación, se mostrará un ejemplo de un bloque donde se define una variable para acceder a la tabla creada en la base de datos. Luego mediante una consulta DML se obtiene el valor total de los productos y se asigna a la variable definida previamente, finalmente se imprime.

Procedimientos Almacenados, Funciones y Cursores

Durante el siguiente tema, se presentarán las instrucciones básicas para crear y ejecutar procedimientos, funciones y cursores en PostgreSql.

Un procedimiento almacenado es un bloque de programación que permite automatizar tareas extensas de una forma efectiva, en el gráfico anterior se puede estudiar su sintaxis.

En PostgrSql se utiliza el lenguaje PL/pgSQL que se encuentra por defecto al instalar la distribución. Para otros lenguajes como PL/Python será necesario ejecutar instrucciones de compilación como por ejemplo --with-python.

Los cursores son herramientas que nos permiten manipular datos de una consulta y procesarlos, generalmente mediante algún lenguaje de programación. En PostgreSQL existen dos tipos de cursores, explícitos o implícitos, dependiendo de la necesidad de programación se puede utilizar uno u otro.

A continuación se presentan ejemplos prácticos de funciones y cursores.

Triggers (Disparadores)

A continuación, se mostrarán las fundamentaciones teóricas para trabajar con los disparadores o (Triggers) en PostgreSql.

Un triggers es una porción de código asociado a una tabla que permite ejecutar automáticamente una instrucción previamente diseñada, la cual responderá a un evento generado por alguna de las siguientes sentencias DML: INSERT, UPDATE o DELETE.

La gestión de triggers optimiza el desarrollo de los sistemas de información ya que permite mejorar los tiempos de procesamiento para ciertos procesos, lo anterior debido a que se ejecutan directamente en el motor de base de datos. A continuación se presentan diferentes ejemplos de aplicación de Triggers.

Actividad de aprendizaje

Actividad de Aprendizaje

Pon a prueba lo aprendido. En la siguiente actividad se presentará un código, el cuál se debe ajustar.

Material
de apoyo

Resumen

Durante la primera unidad, revisamos todos los conceptos básicos y generales para trabajar con el lenguaje pl/pgSql para el motor de bases de datos PostgreSql.

Es importante destacar que la sintaxis utilizada por cada motor de bases de datos, contiene características propias, por tanto, se invita a los estudiantes a que revisen la documentación de cada motor de BD en la eventualidad que se requiera trabajar con alguna de ellas.

De igual forma se invita a revisar con detalle toda la sintaxis para los operadores lógicos, booleanos, declaración de variables, manejo de errores y el manejo del compilador a través de las aplicaciones cliente.

Caso de estudio

Visualiza el siguiente video de ciclos repetitivos y evalúa tus conocimientos.

Bibliografía ()

    Referencias Web