DAM → Bases de Datos → RA5
RA5 · verificado

RA5 de Bases de Datos · DAM

Desarrolla procedimientos almacenados evaluando y utilizando las sentencias del lenguaje incorporado en el sistema gestor de bases de datos.

Comprobar mi dominio con José →

Contenido verificado asociado a este RA

Automatización de Tareas y Guiones SQL

Esta unidad introduce la necesidad de automatizar tareas repetitivas en bases de datos, explorando las diferentes formas de lograrlo mediante guiones SQL. Se identifican las herramientas esenciales para su edición y ejecución, sentando las bases para la gestión eficiente de la base de datos.

Funciones del Sistema Gestor y Funciones de Usuario en SQL

Esta unidad trabaja el CE principal 'Se ha hecho uso de las funciones proporcionadas por el sistema gestor', mostrando las categorías de funciones nativas (cadena, numéricas, fecha/hora, agregación) con ejemplos aplicados. Como complemento, se introduce la creación de funciones de usuario (UDF) escalares, explicando cuándo tiene sentido crearlas, el concepto de determinismo y las precauciones de rendimiento y seguridad. Se incluye una actividad práctica para verificar el aprendizaje.

Procedimientos Almacenados y Estructuras de Control de Flujo

Esta unidad se centra en el desarrollo de procedimientos almacenados, una herramienta clave para encapsular lógica de negocio compleja y mejorar el rendimiento. Se explora en detalle el uso de estructuras de control de flujo para implementar decisiones y bucles dentro de estos procedimientos.

Disparadores (Triggers) y Cursores para Lógica Avanzada

Esta unidad profundiza en dos mecanismos avanzados de programación en bases de datos: los disparadores y los cursores. Se explica cómo los disparadores automatizan acciones en respuesta a eventos DML, mientras que los cursores permiten procesar conjuntos de resultados fila por fila, abordando escenarios donde la lógica set-based no es suficiente.

Conceptos clave

Automatización de tareasGuion SQL (Script SQL)Cliente de línea de comandosIDE de Bases de DatosSentencias DDLSentencias DMLFunción nativa del SGBDFunción de cadenaFunción numéricaFunción de fecha y horaFunción de agregaciónFunción de usuario (UDF)Función escalarFunción con valor de tabla (dependiente del motor)DeterminismoProcedimiento almacenadoParámetros (IN, OUT, INOUT)Estructuras de control de flujo

Errores que conviene evitar

  • **No usar delimitadores adecuados:** En algunos SGBD (como MySQL en modo script), las sentencias deben terminar con un delimitador (`;`). Si un script contiene bloques de código (procedimientos, funciones) que usan `;` internamente, es necesario cambiar el delimitador temporalmente. *Causa:* Desconocimiento del comportamiento del parser SQL. *Corrección:* Antes de definir un procedimiento/función, usar `DELIMITER //` (o similar) y restaurarlo con `DELIMITER ;` después del bloque.
  • **Ejecutar scripts incompletos o con errores de sintaxis:** Un error en una sentencia puede detener la ejecución del script o dejar la base de datos en un estado inconsistente. *Causa:* Falta de revisión o prueba del script. *Corrección:* Probar siempre los scripts en un entorno de desarrollo antes de aplicarlos en producción. Utilizar transacciones si el SGBD lo permite para revertir cambios en caso de error.
  • Asumir que todas las funciones de un SGBD existen igual en otro (por ejemplo, dar por hecho que MySQL soporta funciones con valor de tabla como SQL Server). Causa: generalizar sintaxis entre motores distintos. Corrección: verificar en la documentación oficial del SGBD concreto qué tipos de UDF soporta antes de diseñar la solución.
  • Declarar una UDF como DETERMINISTIC cuando internamente usa CURDATE(), NOW() o una tabla que puede cambiar. Causa: no distinguir entre el resultado deseado y la dependencia real de la función. Corrección: si el resultado puede variar sin cambiar los parámetros de entrada, la función debe declararse NOT DETERMINISTIC, o rediseñarse pasando esos valores como parámetros explícitos.
  • **Bucles infinitos:** No incluir una condición de salida o una modificación de la variable de control que garantice la terminación del bucle. *Causa:* Lógica de bucle incorrecta o incompleta. *Corrección:* Revisar cuidadosamente la condición del bucle y asegurarse de que la variable que controla la condición se actualice en cada iteración de manera que eventualmente la condición de salida se cumpla.
  • **No manejar errores:** Los procedimientos almacenados pueden fallar debido a violaciones de restricciones, errores de datos, etc. No incluir un manejo de errores explícito puede dejar la base de datos en un estado inconsistente o la aplicación sin información clara del fallo. *Causa:* Omisión de bloques de manejo de excepciones. *Corrección:* Utilizar bloques `DECLARE CONTINUE HANDLER FOR SQLSTATE '...'` o `DECLARE EXIT HANDLER FOR SQLSTATE '...'` (MySQL) o `TRY...CATCH` (SQL Server) para capturar y gestionar errores, registrándolos o revirtiendo transacciones.
  • **Abuso de cursores:** Utilizar cursores para tareas que podrían resolverse de forma más eficiente con operaciones set-based (ej. `UPDATE` con `JOIN`, `INSERT ... SELECT`). *Causa:* Pensamiento de programación imperativa en un entorno declarativo. *Corrección:* Siempre buscar una solución set-based primero. Los cursores son un último recurso para problemas muy específicos.
  • **No cerrar o desasignar cursores:** Dejar cursores abiertos consume recursos del servidor y puede llevar a bloqueos. *Causa:* Olvido o falta de comprensión del ciclo de vida del cursor. *Corrección:* Asegurarse de que `CLOSE` y `DEALLOCATE` (o su equivalente en el SGBD) se ejecuten siempre, incluso si ocurre un error, utilizando bloques de manejo de excepciones si es necesario.

Qué se evalúa en este RA

CE a

Se han identificado las diversas formas de automatizar tareas.

CE b

Se han reconocido los métodos de ejecución de guiones.

CE c

Se han identificado las herramientas disponibles para editar guiones.

CE d

Se han definido y utilizado guiones para automatizar tareas.

CE e

Se ha hecho uso de las funciones proporcionadas por el sistema gestor.

CE f

Se han definido funciones de usuario.

CE g

Se han utilizado estructuras de control de flujo.

CE h

Se han definido disparadores.

CE i

Se han utilizado cursores.

Canal Estudios es un servicio de Skillback S.L. · NIF B2481724 · Barcelona, España
Aviso legal · Privacidad · Cookies · Términos · Atles de Catalunya