<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>UD09. Programación con PL/SQL on Bases de Datos · DAM / DAW</title><link>https://lorenalresusta.github.io/BBDD/ud09-plsql/</link><description>Recent content in UD09. Programación con PL/SQL on Bases de Datos · DAM / DAW</description><generator>Hugo</generator><language>es-es</language><copyright>Apuntes del módulo 0484 Bases de Datos · Curso 2026/27</copyright><atom:link href="https://lorenalresusta.github.io/BBDD/ud09-plsql/index.xml" rel="self" type="application/rss+xml"/><item><title>Programación de la base de datos con PL/SQL</title><link>https://lorenalresusta.github.io/BBDD/ud09-plsql/ud09-teoria/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lorenalresusta.github.io/BBDD/ud09-plsql/ud09-teoria/</guid><description>&lt;h1 id="ud09--programación-de-la-base-de-datos-con-plsql"&gt;UD09 · Programación de la base de datos con PL/SQL&lt;a class="anchor" href="#ud09--programaci%c3%b3n-de-la-base-de-datos-con-plsql" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="resumen-del-tema"&gt;Resumen del tema&lt;a class="anchor" href="#resumen-del-tema" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Hasta ahora, la lógica de nuestras tareas vivía &lt;strong&gt;fuera&lt;/strong&gt; de la base de datos: en un guion &lt;code&gt;.sql&lt;/code&gt; que lanzábamos a mano o en la aplicación que consulta Oracle. Eso funciona mientras la tarea sea una secuencia de sentencias. Deja de funcionar cuando hace falta &lt;strong&gt;decidir&lt;/strong&gt; (¿tiene el alumno faltas suficientes para perder la evaluación continua?), &lt;strong&gt;repetir&lt;/strong&gt; (recorrer todos los alumnos de un grupo), &lt;strong&gt;reaccionar a un error&lt;/strong&gt; (¿qué hago si el módulo no existe?) o &lt;strong&gt;garantizar una regla&lt;/strong&gt; que nadie pueda saltarse, entre ellas las que en la UD03 llamamos &lt;em&gt;restricciones que el modelo lógico no puede expresar&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Programación con PL/SQL - Prácticas</title><link>https://lorenalresusta.github.io/BBDD/ud09-plsql/ud09-practicas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lorenalresusta.github.io/BBDD/ud09-plsql/ud09-practicas/</guid><description>&lt;h1 id="ud09--prácticas"&gt;UD09 · Prácticas&lt;a class="anchor" href="#ud09--pr%c3%a1cticas" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;div class="bd-ra"&gt;&#10; &lt;div class="bd-ra-head"&gt;Resultados de aprendizaje y criterios de evaluación&lt;/div&gt;&lt;details class="bd-ra-item"&gt;&#10; &lt;summary&gt;&lt;span class="bd-ra-code"&gt;RA5&lt;/span&gt; Desarrolla procedimientos almacenados evaluando y utilizando las sentencias del lenguaje incorporado en el sistema gestor de bases de datos. &lt;span class="bd-ra-count"&gt;10 CE&lt;/span&gt;&lt;/summary&gt;&#10; &lt;ul&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.a&lt;/span&gt; Se han identificado las diversas formas de automatizar tareas.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.b&lt;/span&gt; Se han reconocido los métodos de ejecución de guiones.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.c&lt;/span&gt; Se han identificado las herramientas disponibles para editar guiones.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.d&lt;/span&gt; Se han definido y utilizado guiones para automatizar tareas.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.e&lt;/span&gt; Se ha hecho uso de las funciones proporcionadas por el sistema gestor.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.f&lt;/span&gt; Se han definido procedimientos y funciones de usuario.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.g&lt;/span&gt; Se han utilizado estructuras de control de flujo.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.h&lt;/span&gt; Se han definido eventos y disparadores.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.i&lt;/span&gt; Se han utilizado cursores.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA5.j&lt;/span&gt; Se han utilizado excepciones.&lt;/li&gt;&lt;/ul&gt;&#10; &lt;/details&gt;&lt;details class="bd-ra-item"&gt;&#10; &lt;summary&gt;&lt;span class="bd-ra-code"&gt;RA4&lt;/span&gt; Modifica la información almacenada en la base de datos utilizando asistentes, herramientas gráficas y el lenguaje de manipulación de datos. &lt;span class="bd-ra-count"&gt;2 CE&lt;/span&gt;&lt;/summary&gt;&#10; &lt;ul&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA4.d&lt;/span&gt; Se han diseñado guiones de sentencias para llevar a cabo tareas complejas.&lt;/li&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA4.h&lt;/span&gt; Se han adoptado medidas para mantener la integridad y consistencia de la información.&lt;/li&gt;&lt;/ul&gt;&#10; &lt;/details&gt;&lt;details class="bd-ra-item"&gt;&#10; &lt;summary&gt;&lt;span class="bd-ra-code"&gt;RA6&lt;/span&gt; Diseña modelos relacionales normalizados interpretando diagramas entidad/relación. &lt;span class="bd-ra-count"&gt;1 CE&lt;/span&gt;&lt;/summary&gt;&#10; &lt;ul&gt;&lt;li&gt;&lt;span class="bd-ce-code"&gt;RA6.h&lt;/span&gt; Se han analizado y documentado las restricciones que no pueden plasmarse en el diseño lógico.&lt;/li&gt;&lt;/ul&gt;&#10; &lt;/details&gt;&lt;/div&gt;&#10;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Práctica&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Tipo&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Nivel&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;CE principales&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-91--primeros-bloques-el-expediente-de-un-alumno"&gt;9.1 Primeros bloques: el expediente de un alumno&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Guiada&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●○○&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.b, RA5.c, RA5.e, RA5.g&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-92--biblioteca-de-funciones-de-edugest"&gt;9.2 Biblioteca de funciones de EduGest&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Guiada&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●○&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.e, RA5.f&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-93--procedimiento-de-matr%c3%adcula-con-excepciones"&gt;9.3 Procedimiento de matrícula con excepciones&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Guiada&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●○&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.f, RA5.g, RA5.j&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-94--cursores-boletines-e-informes"&gt;9.4 Cursores: boletines e informes&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Autónoma&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●○&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.g, RA5.i&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-95--disparadores-de-integridad-y-auditor%c3%ada"&gt;9.5 Disparadores de integridad y auditoría&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Guiada&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●●&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.h, RA6.h, RA4.h&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-96--reto-la-tabla-mutante"&gt;9.6 Reto: la tabla mutante&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Reto&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●●&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.h, RA5.i&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-97--tareas-programadas"&gt;9.7 Tareas programadas&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Guiada&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●○&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.a, RA5.d, RA5.h&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#pr%c3%a1ctica-98--reto-el-paquete-de-secretar%c3%ada"&gt;9.8 Reto: el paquete de secretaría&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Reto&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●●&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5.d, RA5.f, RA5.j, RA4.d&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#proyecto-edugest--ud09-l%c3%b3gica-en-el-servidor"&gt;Proyecto EduGest · UD09&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Proyecto&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;●●●&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RA5 completo, RA6.h&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;blockquote class='book-hint important'&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Trabaja como &lt;code&gt;EDUGEST&lt;/code&gt; sobre los datos originales (scripts 01 y 02).&lt;/li&gt;&#10;&lt;li&gt;Activa la salida en cada sesión: &lt;code&gt;SET SERVEROUTPUT ON&lt;/code&gt; (en SQL Developer, también &lt;em&gt;Ver → Salida de DBMS&lt;/em&gt; y el botón &lt;strong&gt;+&lt;/strong&gt; para la conexión).&lt;/li&gt;&#10;&lt;li&gt;Guarda &lt;strong&gt;cada&lt;/strong&gt; subprograma en su propio fichero &lt;code&gt;.sql&lt;/code&gt; terminado en &lt;code&gt;/&lt;/code&gt;. Así podrás recompilarlo y versionarlo.&lt;/li&gt;&#10;&lt;/ul&gt;&lt;/blockquote&gt;&lt;hr&gt;&#10;&lt;h2 id="práctica-91--primeros-bloques-el-expediente-de-un-alumno"&gt;Práctica 9.1 · Primeros bloques: el expediente de un alumno&lt;a class="anchor" href="#pr%c3%a1ctica-91--primeros-bloques-el-expediente-de-un-alumno" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="bd-practica bd-practica--guiada"&gt;&#10; &lt;div class="bd-practica-top"&gt;&#10; &lt;span class="bd-practica-num"&gt;Práctica 9.1&lt;/span&gt;&#10; &lt;span class="bd-pill bd-pill--guiada"&gt;Guiada&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;dl class="bd-practica-meta"&gt;&lt;div&gt;&lt;dt&gt;Duración&lt;/dt&gt;&lt;dd&gt;2 sesiones&lt;/dd&gt;&lt;/div&gt;&lt;div&gt;&lt;dt&gt;Dificultad&lt;/dt&gt;&lt;dd&gt;&lt;span class="bd-nivel" aria-label="Nivel 1 de 3"&gt;&lt;i class="on"&gt;&lt;/i&gt;&lt;i class=""&gt;&lt;/i&gt;&lt;i class=""&gt;&lt;/i&gt;&lt;/span&gt;&lt;/dd&gt;&lt;/div&gt;&lt;div&gt;&lt;dt&gt;RA / CE&lt;/dt&gt;&lt;dd&gt;RA5: b, c, e, g&lt;/dd&gt;&lt;/div&gt;&lt;div&gt;&lt;dt&gt;Software&lt;/dt&gt;&lt;dd&gt;Oracle 26ai · SQL Developer y SQLcl&lt;/dd&gt;&lt;/div&gt;&lt;div&gt;&lt;dt&gt;Entrega&lt;/dt&gt;&lt;dd&gt;p9_1.sql &amp;#43; salida&lt;/dd&gt;&lt;/div&gt;&lt;/dl&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h4 id="objetivo"&gt;Objetivo&lt;a class="anchor" href="#objetivo" aria-label="Link"&gt;&lt;/a&gt;&lt;/h4&gt;&#10;&lt;p&gt;Escribir y ejecutar bloques anónimos con variables, consultas &lt;code&gt;SELECT INTO&lt;/code&gt;, funciones del sistema gestor y estructuras de control.&lt;/p&gt;</description></item></channel></rss>