0% encontró este documento útil (0 votos)
25 vistas17 páginas

Lenguaje de Procedimientos PL/SQL

El documento aborda el uso del lenguaje de procedimientos PL/SQL en la gestión de bases de datos relacionales, destacando su importancia en la optimización del manejo de grandes volúmenes de datos. Se analizan las características distintivas de PL/SQL en comparación con SQL, así como su impacto en rendimiento, mantenimiento y seguridad. Además, se presentan prácticas simuladas que incluyen la creación de procedimientos almacenados, objetos y cursores, ilustrando su aplicación práctica.

Cargado por

j0rg3itsvan92
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas17 páginas

Lenguaje de Procedimientos PL/SQL

El documento aborda el uso del lenguaje de procedimientos PL/SQL en la gestión de bases de datos relacionales, destacando su importancia en la optimización del manejo de grandes volúmenes de datos. Se analizan las características distintivas de PL/SQL en comparación con SQL, así como su impacto en rendimiento, mantenimiento y seguridad. Además, se presentan prácticas simuladas que incluyen la creación de procedimientos almacenados, objetos y cursores, ilustrando su aplicación práctica.

Cargado por

j0rg3itsvan92
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIDAD 2 - LENGUAJE DE PROCEDIMIENTOS PL/SQL

ETAPA 3 – COMPONENTE PRÁCTICO – PRÁCTICAS SIMULADAS

PARTICIPANTES:

CC: XXXX – Jorge Luis Rodríguez Cruz


CC: XXXX - Jorge Itsvan Florez Herrera
CC: 108924232 Yimar Erazo

GRUPO No. 18

Tutor:
Mariano Esteban Romero Torres

Universidad Nacional Abierta y a Distancia – UNAD


Escuela Ciencias básicas, tecnología e ingeniería
Programa Ingeniería de Sistemas
Base de datos avanzada 301125
Periodo 16-01
Colombia
2024
TABLA DE CONTENIDO
INTRODUCCIÓN......................................................................................................................3
OBJETIVOS................................................................................................................................4
Objetivo General................................................................................................................4
Objetivos Específicos........................................................................................................4
RESULTADO.............................................................................................................................5
1. Selección y respuesta de la pregunta motivadora.....................................5
2. Lenguaje de procedimientos PL/SQL...............................................................8
Vista......................................................................................................... 8
Procedimiento almacenado......................................................................9
Objeto.................................................................................................... 10
Cursor.................................................................................................... 12
Disparador............................................................................................. 14
CONCLUSIONES....................................................................................................................16
BIBLIOGRAFÍA........................................................................................................................17
Introducción

Actualmente el manejo eficiente de grandes volúmenes de datos se ha


convertido en un desafío muy importante para las organizaciones que
dependen de la gestión de datos para la toma de decisiones. En este
sentido, los procedimientos almacenados en bases de datos relacionales,
especialmente en lenguajes como PL/SQL (Procedural Language/Structured
Query Language), son un papel fundamental. PL/SQL son una extensión de
SQL que permite la ejecución de procedimientos almacenados y otras
operaciones más complejas, lo que ofrece a los desarrolladores una
herramienta poderosa para optimizar el manejo de datos en entornos de
bases de datos complejos.

El objetivo principal de este trabajo es explorar la función y utilidad del


lenguaje PL/SQL en comparación con SQL, centrándonos en cómo los
procedimientos almacenados en PL/SQL pueden optimizar el manejo de
grandes volúmenes de datos en bases de datos relacionales. Para lograr
este objetivo, examinaremos las características distintivas de PL/SQL que lo
diferencian de SQL, así como su impacto en términos de rendimiento,
mantenimiento y seguridad de la base de datos.
Objetivos

Objetivo General

Analizar y aplicar el lenguaje PL/SQL en el contexto de bases de datos


relacionales para optimizar el manejo de grandes volúmenes de datos,
centrándose en la eficiencia y capacidad de desarrollo en entornos
complejos.

Objetivos Específicos

Explorar críticamente las características distintivas de PL/SQL en


comparación con SQL, destacando su naturaleza procedural y su capacidad
para encapsular lógica de negocio en procedimientos almacenados.
Evaluar el impacto de la implementación de procedimientos almacenados
en términos de rendimiento, mantenimiento y seguridad de la base de
datos, identificando las mejores prácticas para optimizar el manejo de
grandes volúmenes de datos en entornos de bases de datos complejos.
RESULTADO

1. Selección y respuesta de la pregunta motivadora

Recuerde: La respuesta de cada pregunta se publica en el foro, esta


respuesta debe ser un párrafo de su propia autoría con mínimo 100 y
máximo 150 palabras, así mismo se debe citar mínimo dos autores (uno
nacional y otro internacional) para dar fundamentación teórica a la
respuesta.

Nota: Cada estudiante debe seleccionar mínimo la respuesta de un


compañero y realizar un comentario significativo que contribuya a mejorar
la respuesta.

Nombre del estudiante 1 Jorge Itsvan Florez Herrera


Pregunta 1: El lenguaje PL/SQL (Procedural Language/Structured Query
Language) se presenta como una extensión del SQL que permite la
ejecución de procedimientos almacenados y otras operaciones más
complejas. Para explorar críticamente esta extensión y su relación con el
SQL convencional, se propone el siguiente interrogante ¿Cómo describiría
usted la función y utilidad del lenguaje PL/SQL en comparación con
SQL? ¿Cuáles son las características distintivas de PL/SQL que lo
diferencian de SQL y cómo estas características afectan la
eficiencia y capacidad de desarrollo en entornos de bases de datos
más complejos?
Respuesta:

Describiría la función de PL/SQL como la capacidad del lenguaje de


programación que, al ser empleado a través de los gestores de bases de
datos, podemos declarar procedimientos, compuestos por instrucciones con
diversos objetivos tales como toma de decisiones, iteraciones, declaración
de constantes, funciones, tipos y variables de estos tipos.

Así mismo, es importante resaltar que es de gran utilidad para los


desarrolladores y administradores de las bases de datos para poder dotar a
estas, con bloques de código que permitan procesar de una manera más
óptima, eficiente y especifica la información almacenada en ellas y poder
entregar datos e información mejor elaborada conforme las reglas del
negocio debido a que al comparar su uso y desempeño, con el de SQL, que
es declarar la estructura de la base de datos y establecer las reglas para el
almacenamiento de la información, este, nos permite ir más allá y no solo
almacenarla sino procesarla, modificarla, actualizarla, eliminarla y obtener
nueva información a partir de esta. Lo anterior teniendo en cuenta que se
puede hacer comprobación de errores por medio de la herramienta bloque
de manejo de excepciones y que el motor de la base de datos procesará
todas las instrucciones en los scripts sin distinción alguna entre SQL y
PL/SQL.

Las principales características que diferencian PL/SQL de SQL, son la


naturaleza procedural a través de la cual los programadores pueden
escribir programas almacenados que incluyen lógica procedural como son
condicionales, bucles y manejo de excepciones
respecto a la naturaleza declarativa del SQL que se enfoca en describir
cuales datos se necesitan ya sea para consultarlos, insertarlos,
actualizarlos ó eliminarlos de la base de datos.

La Flexibilidad y control de PL/SQL adiciona la capacidad de creación de


procedimientos almacenados, disparadores y funciones encapsulando
lógica del negocio en la base de datos, lo que aporta a la modularidad,
seguridad e incluso a la seguridad de la información en la base de datos
respecto a las consultas y manipulación de datos que se puede llevar a
cabo haciendo uso de SQL.

En cuanto a la optimización y rendimiento, PL/SQL permite la estructuración


y ejecución de operaciones más complejas, respecto a las operaciones que
podemos ejecutar haciendo uso de SQL. Es importante recalcar la
importancia de una correcta implementación de estas operaciones y uso de
los recursos de la base de datos, ya que una mala implementación puede
perjudicar el rendimiento de esta.

Por último en cuanto a seguridad y mantenibilidad respecta, sabemos que


SQL nos permite establecer restricciones como, claves primarias, foráneas,
entre otros y PL/SQL complementa este aspecto al encapsular la lógica del
negocio en procedimientos almacenados y funciones, los cuales tienen
ventajas al momento de hacer gestión y mantenimiento a la base de datos.

Comentario: La respuesta es una comparación entre SQL y PL/SQL, que nos


muetra las diferencias fundamentales entre ambos lenguajes y cómo estas
influyen en la eficiencia y capacidad de desarrollo en entornos de bases de
datos complejos. Destaca la capacidad procedural de PL/SQL, que permite
la creación de programas almacenados con lógica procedural, en contraste
con la naturaleza declarativa de SQL. Además, resalta la flexibilidad y
control que PL/SQL otorga al permitir la creación de procedimientos
almacenados, disparadores y funciones, lo que promueve la modularidad y
seguridad de la base de datos. Igualmente informa también sobre la
importancia de la correcta implementación de PL/SQL para optimizar el
rendimiento y se enfatiza su papel en la seguridad y mantenibilidad de la
base de datos.
Autor del comentario: Yimar Erazo

Nombre del estudiante 2 Yimar Erazo


Pregunta 2: Los procedimientos almacenados son componentes
esenciales en el ámbito de las bases de datos, ya que encapsulan lógica de
negocio y operaciones complejas. Estos se presentan como unidades de
código que simplifican y optimizan las tareas de gestión de datos. En este
contexto, es importante reflexionar sobre las siguientes preguntas: ¿Cómo
definiría el concepto de procedimiento almacenado y cuál considera que es
su función principal en el diseño y gestión de bases de datos? ¿Cómo
impacta la implementación de procedimientos almacenados en términos de
rendimiento, mantenimiento y seguridad de una base de datos?

Respuesta:
Los procedimientos almacenados son unidades de código que encapsulan
lógica de negocio y operaciones complejas en el ámbito de las bases de
datos. Según Celko (2006), se definen como bloques de código SQL que
pueden incluir sentencias de control de flujo, operaciones de manipulación
de datos y cálculos. Su función principal radica en la reutilización de código,
la simplificación de la lógica de aplicación y la mejora del rendimiento al
minimizar la cantidad de datos transferidos entre la base de datos y la
aplicación (Date, 2004). Además, los procedimientos almacenados
contribuyen significativamente al mantenimiento y la seguridad de la base
de datos al centralizar la lógica de negocio en un solo lugar y al permitir el
control de acceso a través de permisos específicos de ejecución (Celko,
2006).

Referencias:

Celko, J. (2006). Joe Celko's SQL for Smarties: Advanced SQL Programming.
Morgan Kaufmann.
Date, C. J. (2004). An Introduction to Database Systems. Addison-Wesley.

Comentario: …….
Autor del comentario: En este espacio se debe colocar el nombre del
estudiante que realiza el comentario a la respuesta del estudiante 2
Nombre del estudiante 3
Pregunta 3: Dentro del contexto de las bases de datos, los activadores
(triggers) son elementos clave que permiten la ejecución automática de
acciones en respuesta a ciertos eventos. En el diseño y gestión de bases de
datos, los activadores se utilizan para automatizar acciones en respuesta a
eventos específicos. ¿Cómo definiría la esencia y función fundamental de
un activador? ¿Cuáles son las principales características que definen a un
activador y cómo impactan en la integridad y eficiencia de una base de
datos?
Respuesta:

Comentario: …….
Autor del comentario: En este espacio se debe colocar el nombre del
estudiante que realiza el comentario a la respuesta del estudiante 3
Nombre del estudiante 4
Pregunta 4: Los cursores se utilizan para gestionar y recorrer conjuntos de
resultados en bases de datos. Para fomentar una reflexión crítica sobre su
significado y utilidad, es importante entender que los cursores desempeñan
un papel fundamental al permitir la manipulación y navegación a través de
conjuntos de resultados. ¿Cómo definiría el concepto de cursor y cuál
considera que es su importancia en términos de procesamiento de datos en
una base de datos? ¿En qué situaciones específicas los cursores son
particularmente valiosos, y cuáles podrían ser los posibles desafíos o
limitaciones asociados con su uso? Además, ¿cómo impacta el uso de
cursores en la eficiencia y mantenimiento de una base de datos, y cómo
podrían optimizarse para mejorar el rendimiento del sistema?
Respuesta:

Comentario: …….
Autor del comentario: En este espacio se debe colocar el nombre del
estudiante que realiza el comentario a la respuesta del estudiante 4
Nombre del estudiante 5
Pregunta 5: En el ámbito de PL/SQL, los objetos desempeñan un papel
crucial al encapsular datos y funcionalidades relacionadas. Con el objetivo
de profundizar en su significado y utilidad, es de aclarar que los objetos se
utilizan para encapsular datos y funciones relacionadas, siendo tipos de
datos personalizados, registros o colecciones. ¿Cómo interpreta y valora la
relevancia de los objetos en términos de modularización y organización del
código? ¿Cuáles son las situaciones específicas en las que considera que el
uso de objetos es particularmente beneficioso, y cuáles podrían ser los
posibles desafíos o limitaciones asociados con su implementación?
Respuesta:

Comentario: …….
Autor del comentario: En este espacio se debe colocar el nombre del
estudiante que realiza el comentario a la respuesta del estudiante 5

2. Lenguaje de procedimientos PL/SQL

Vista
Código - vista:

CREATE VIEW estudiantes_aprovados AS


SELECT NOTA, ID_ESTUDIANTE
FROM NOTAS
WHERE NOTA >= 3;

Resultado de la consulta: Se espera una imagen con el resultado


tomada del gestor de base de datos

Consulta a la vista:

SELECT * FROM estudiantes_aprovados;


Procedimiento almacenado

create or replace PROCEDURE consultar_horario_profesor(


C_ID_PROFESOR IN NUMBER) AS
C_ID_HORARIO HORARIO.ID_HORARIO%TYPE;
C_ID_ASIGNATURA HORARIO.ID_ASIGNATURA%TYPE;
C_ID_AULA HORARIO.ID_AULA%TYPE;
C_DIA HORARIO.DÍA%TYPE;
C_HORA_INICIO HORARIO.HORA_INICIO%TYPE;
C_HORA_FIN HORARIO.HORA_FIN%TYPE;
BEGIN
SELECT ID_HORARIO, ID_ASIGNATURA, ID_AULA, DÍA, HORA_INICIO,
HORA_FIN
INTO C_ID_HORARIO, C_ID_ASIGNATURA, C_ID_AULA, C_DIA,
C_HORA_INICIO, C_HORA_FIN
FROM HORARIO
WHERE ID_PROFESOR = C_ID_PROFESOR;
DBMS_OUTPUT.PUT_LINE('El profesor '||C_ID_PROFESOR||' tiene clase de la
materia '||C_ID_ASIGNATURA||' en el salon '
||C_ID_AULA||' el dia '||C_DIA||' desde las '||C_HORA_INICIO||' hasta las '||
C_HORA_FIN);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND');
--C_ID_HORARIO:= NULL; C_ID_ASIGNATURA:= NULL; C_ID_AULA:= NULL;
C_DIA:= NULL; C_HORA_INICIO:= NULL; C_HORA_FIN:= NULL;
END consultar_horario_profesor;
/
Resultado de la consulta: Se espera una imagen con el resultado
tomada del gestor de base de datos

Objeto
Código - Objeto:
Parte1
create or replace TYPE alumno AS OBJECT(
--ATRIBUTOS
codigo int,
nombre varchar2(50),
edad int,
grado int,
jornada varchar(12),

MEMBER FUNCTION ver_alumno RETURN INT, VARCHAR2, INT, INT,


VARCHAR2,
MEMBER PROCEDURE cambiar_jornada(n_jornada VARCHAR2)
);
/

Parte2
create or replace TYPE BODY alumno AS
MEMBER FUNCTION ver_alumno RETURN INT, VARCHAR2, INT, INT,
VARCHAR2 AS
BEGIN
RETURN 'codigo: '||codigo||' nombre: '||nombre||' edad: '||edad||' grado:
'||grado||' jornada: '||jornada;
END ver_alumno;

MEMBER PROCEDURE cambiar_jornada(n_jornada varchar2) AS


BEGIN
jornada:=n_jornada;
END cambiar_jornada;
END;
Parte3
SET SERVEROUTPUT ON

DECLARE
estudiante1 alumno;
BEGIN
estudiante1:=alumno(100,'Jorge Istvan',13,6,'mañana');
DBMS_OUTPUT.PUT_LINE(estudiante1.ver_alumno());
END;

[Link]

Resultado de la consulta: Se espera una imagen con el resultado


tomada del gestor de base de datos
Cursor

Código - Cursor:

DECLARE
CURSOR cur_horarios IS
SELECT ID_HORARIO, ID_PROFESOR, ID_ASIGNATURA, ID_AULA, DÍA,
HORA_INICIO, HORA_FIN
FROM HORARIO;

-- Variables para almacenar los valores de cada columna

v_id_horario HORARIO.ID_HORARIO%TYPE;
v_id_profesor HORARIO.ID_PROFESOR%TYPE;
v_id_asignatura HORARIO.ID_ASIGNATURA%TYPE;
v_id_aula HORARIO.ID_AULA%TYPE;
v_dia HORARIO.DÍA%TYPE;
v_hora_inicio HORARIO.HORA_INICIO%TYPE;
v_hora_fin HORARIO.HORA_FIN%TYPE;
BEGIN

-- Abrir el cursor
OPEN cur_horarios;
-- Bucle de procesamiento de filas

LOOP
-- Obtener los valores de las columnas para la fila actual

FETCH cur_horarios INTO v_id_horario, v_id_profesor, v_id_asignatura,


v_id_aula, v_dia, v_hora_inicio, v_hora_fin;

-- Salir del bucle si no hay más filas


EXIT WHEN cur_horarios%NOTFOUND;

-- Procesar los valores de las variables como sea necesario


DBMS_OUTPUT.PUT_LINE('ID_HORARIO: ' || v_id_horario || ',
ID_PROFESOR: ' || v_id_profesor || ', ID_ASIGNATURA: ' || v_id_asignatura ||
', ID_AULA: ' || v_id_aula || ', DÍA: ' || v_dia || ', HORA_INICIO: ' ||
TO_CHAR(v_hora_inicio, 'DD-Mon-YY [Link]') || ', HORA_FIN: ' ||
TO_CHAR(v_hora_fin, 'DD-Mon-YY [Link]'));
END LOOP;

-- Cerrar el cursor
CLOSE cur_horarios;
END;

Nota: Ejercicio desarrollado con la tabla HORARIO

Resultado de la consulta:
Este cursor PL/SQL selecciona todas las columnas de la tabla HORARIO y
recorre cada fila utilizando un bucle. Cada fila se imprime en la salida
estándar utilizando DBMS_OUTPUT.PUT_LINE.

Disparador

Código - Disparador:

CREATE OR REPLACE TRIGGER trg_validar_hora_fin


BEFORE INSERT OR UPDATE ON HORARIO
FOR EACH ROW
DECLARE
v_hora_inicio DATE;
v_hora_fin DATE;
BEGIN
-- Obtener la hora de inicio y la hora de fin del nuevo registro
v_hora_inicio := :NEW.HORA_INICIO;
v_hora_fin := :NEW.HORA_FIN;

-- Verificar que la hora de fin sea posterior a la hora de inicio


IF v_hora_fin <= v_hora_inicio THEN
RAISE_APPLICATION_ERROR(-20001, 'La hora de fin debe ser
posterior a la hora de inicio´);
END IF;
END;
/

Nota: Ejercicio desarrollado con la tabla HORARIO


Resultado de la consulta:

El disparador se activará antes de insertar o actualizar filas en la tabla


HORARIO y verificará que la hora de fin (HORA_FIN) sea posterior a la hora
de inicio (HORA_INICIO). Si esta condición no se cumple, se generará un
error con el mensaje "La hora de fin debe ser posterior a la hora de
inicio".
Conclusiones

La utilización de procedimientos almacenados en PL/SQL ofrece una manera


eficiente y poderosa de optimizar el manejo de grandes volúmenes de datos
en entornos de bases de datos relacionales. Estos procedimientos permiten
encapsular lógica de negocio compleja dentro de la propia base de datos, lo
que puede mejorar significativamente el rendimiento y la seguridad de la
aplicación.

Los disparadores en PL/SQL proporcionan una herramienta valiosa para


implementar reglas de negocio y garantizar la integridad de los datos en
una base de datos. Mediante la creación de disparadores que se ejecutan
antes o después de ciertas operaciones, es posible validar y modificar datos
automáticamente, lo que contribuye a mantener la coherencia y
consistencia de la base de datos

Bibliografía
Camuña Rodríguez, J. F. (2015). Lenguajes de definición y
modificación de datos SQL (UF1472).. IC Editorial. (pág. 54-56).
[Link]
page=60

Romero, M. (2023) OVA Procedimientos almacenados. Repositorio


institucional UNAD [Link]

Piñeiro Gómez, J. M. (2013). Manual gestión de bases de datos:


formación para el empleo. Editorial CEP, S.L. (pág. 225-235). [Link]
[Link]/es/ereader/unad/50609?page=223

Hueso Ibáñez, L. (2015). Administración de sistemas gestores de


bases de datos ([Link].): ( ed.). RA-MA Editorial. (pág. 119-223, 277-278).
[Link]
page=121

También podría gustarte