Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ORACLE PL/SQL
Material de ESTUDIANTE
MATERIAL ELABORADO POR INSTRUCTOR INTERNACIONAL Ing. Rodrigo Franti Alfaro Pinto, para
ser impartido en El Salvador a través de J.V. IRAHETA RAMIREZ Y COMPAÑÍA ( WEBCOMMSERVICE).
Queda estrictamente prohibida la reproducción TOTAL O PARCIAL (por cualquier medio) de los
materiales y complementos proporcionados al asistente de este curso para Usos comerciales o para
Beneficio Económico ya sea propio o de terceros.
Este material esta destinado exclusivamente para aprendizaje y conocimientos del participante que ha
asistido a este taller.
Sobre mí
● Más de 14 años en el mundo TI.
● Ingeniero Civil en Computación, Universidad de Chile.
● MBA, Universitat Politècnica de València (UPV).
● Promover el crecimiento económico de las pymes utilizando una
solida infraestructura de tecnología de la información que las ayude
a crear ventajas competitivas.
● Viajero, soñador y desarrollador de software amante de C.
● Fundador de Netstream, empresa chilena de consultoría IT con
presencia en Perú, Bolivia, Colombia y Venezuela.
● Hoy me dedico a dar charlas y cursos por latinoamerica.
● http://rodrigoalfaropinto.com
Agenda día 01
• https://bit.ly/2spiGxj
Instalación Oracle 12c
• Pre requisitos:
● Java 8
● Windows Server 2012 R2
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle 12c
Instalación Oracle
12c
Diseño de bases de datos
relacionales
• El modelo de datos relacional debe cumplir dos objetivos:
● El sistema debe presentar los datos en forma de tablas.
● Acepte el modelo de lenguaje “set at time”, el usuario realiza
una pregunta o “query” y el motor devuelve todas las
coincidencias.
Diseño de bases de datos
relacionales
• Comentarios
• /*
• Comentario bloque
• */
• /*Comentario línea*/
Elementos Oracle SQL
● Pseudocolumnas, Se comportan como las columnas de una tabla,
pero no se almacenan en las tablas. Son pseudocolumnas en Oracle
CURRVAL, NEXTVAL,LEVEL,ROWNUM.
● Esquemas, Oracle organiza logicamente, no fisicamente objetos
relacionados dentro de un esquela todos los elementos de una
aplicación (tablas, objetos, etc.). En Oracle el concepto es esquema de
datos asociado a usuario de base de datos. Usuario y esquema
poseen el mismo nombre.
Elementos de Oracle SQL
• En Oracle, las instrucciones crean tablas y clusteres también
pueden utilizar tipos de datos ANSI y de productos IBM SQL/DS y
DB2. Oracle reconoce estos datos y los registra según regla de
conversión.
Elementos de Oracle SQL
Elementos de Oracle SQL
• Bibliografía
• PL/SQL.
• Triggers.
• Ejercicios.
55
PL/SQL
▶ PL/SQL ofrece varias ventajas sobre otros lenguajes de programación. Algunas de sus
ventajas son:
▶ • Estrecha integración con SQL.
▶ • Alto rendimiento.
▶ • Alta productividad.
▶ • Portabilidad.
▶ • Escalabilidad.
▶ • Capacidad de administración.
▶ • Soporte para Programación Orientada a Objetos.
56
PL/SQL
▶ • PL/SQL permite usar toda la manipulación de datos SQL, control de cursor y transacción
instrucciones de control y todas las funciones de SQL, operadores y pseudocolumnas.
▶ • PL/SQL es totalmente compatible con los tipos de datos SQL. No necesita convertir tipos de
datos PL/SQL y SQL. Por ejemplo, si el programa PL/SQL recupera un valor de una columna del
tipo SQL VARCHAR2, puede almacena ese valor en una variable PL/SQL del tipo VARCHAR2.
▶ •PL/SQL permite ejecutar una consulta SQL y procesar las filas del conjunto de resultados una a
hora especifica.
57
PL/SQL
58
PL/SQL
▶ Subprogramas, SP o Procedimientos almacenados
▶ Los subprogramas PL/SQL se almacenan en forma ejecutable y pueden invocarse
repetidamente.
▶ Debido a que los subprogramas almacenados se ejecutan en el servidor de la base de
datos, una sola invocación puede comenzar un gran trabajo.
▶ Esta división del trabajo reduce el tráfico de la red y mejora los tiempos de respuesta.
▶ Los subprogramas almacenados se almacenan en caché y se comparten entre los usuarios,
lo que reduce los requisitos de memoria y la sobrecarga.
59
PL/SQL
▶ Optimizador
▶ El compilador PL / SQL tiene un optimizador que puede
reorganizar el código para una mejor performance en el
motor de base de datos.
60
PL/SQL
▶ Portabilidad
▶ PL/SQL es un lenguaje portátil y estándar para el
desarrollo de Oracle.
▶ Puede ejecutar aplicaciones PL/SQL en cualquier
sistema operativo y plataforma donde Oracle se
ejecuta.
61
PL/SQL
▶ Escalabilidad
62
PL/SQL
▶ Componentes de PL/SQL
63
PL/SQL
64
PL/SQL
▶ Bloque
65
PL/SQL
66
PL/SQL
67
PL/SQL
▶ Tipos de expresiones:
● Aritméticas : + - * /
● Comparaciones : = != > > >= <=
● Concatenación de caracteres ⏐⏐
▶ Tipos de variables:
● Escalares. Definidos por el lenguaje VARCHAR2, DATE,
LOB, LONG, NUMBER, etc.
● Compuestos:
●Definidos por el usuario
●Registros
68
PL/SQL
69
PL/SQL
70
PL/SQL
71
Funciones de Transformación
▶To_char (<valor>,<formato>):
Transforma valor al tipo CHAR,
según el formato opcional
▶To_number (<valor>,<formato>):
Transforma valor al tipo NUMBER,
según el formato opcional
▶To_date (<valor>,<formato>):
Transforma valor al tipo DATE,
según el formato opcional
Funciones de Texto
▶ Desde la versión 9i de
Oracle no es necesario
declarar un tipo Ref
Cursor. Se puede
declarar la variable
directamente con el
tipo Sys_RefCursor
Conceptos Claves,
Excepciones
▶ Las excepciones se generan cuando se producen condiciones de errores
▶ Cuando ocurre en la ejecución del código, el control de dicha ejecución
se traspasa a la sección de manejo de excepciones del bloque
▶ Toda excepción se propagará hasta que sea capturada
▶ Si la excepción es capturada, la ejecución del código no volverá al
punto donde se produjo el error
• En particular, las excepciones predefinidas son aquellas que ya están incorporadas y no necesitan ser declaradas
Ejemplo de Excepción
Sintaxis
Declare
…..
Begin
…..
EXCEPTION
WHEN nombre_exception THEN
…..
WHEN nombre_exception THEN
…..
End;
Ejemplo de Uso
▶ Si se detecta el
manejador de
excepción apropiado,
se ejecutará el código
asociado, de lo
contrario se ejecutará
el código asociado al
manejador OTHERS
(siempre debe ser el
último declarado)
Ejemplo de excepciones
predefinidas
▶ A continuación una lista de las mas utilizadas:
▶ Zero_Divide: Cuando existe una división por cero
▶ Too_Many_Rows: Cuando se devuelve mas de una fila
▶ No_Data_Found: Cuando no se devuelven datos
▶ Value_Error: Error aritmético, conversión o truncamiento
▶ Rowtye_mismatch: Tipos incompatibles
▶ Cursor_already_open: El cursor se encuentra tiempo
Conceptos Claves, Excepciones
definidas por usuario
Procedimiento
Declarado
Ejemplo de procedimiento almacenado con
cursor explícito
Ejecución de un procedimiento almacenado
▶ Sintaxis:
126
TRIGGER
▶ Disparadores (Trigger)
▶ Un trigger define una acción que la base de datos siempre debería realizar
cuando ocurre algún tipo de acontecimiento que la afecta.
▶ Se utilizan para:
● Mantener la integridad referencial.
● Asegurar reglas de negocio complejas
● Auditar cambios en los datos.
127
TRIGGER
▶ Las acciones del trigger se definen mediante bloques de
▶ PL/SQL nominados con las secciones:
● Declarativa
● Ejecutable
● Manejo de excepciones
128
TRIGGER
▶ Eliminar un trigger
● DROP TRIGGER nombre_disparador;
▶ Activación/Desactivación
● ALTER TRIGGER nombre_disparador {DISABLE | ENABLE};
● ALTER TABLE nombre_tabla {ENABLE | DISABLE} ALL TRIGGERS;
129
TRIGGER
▶ Componentes de un trigger
▶ Nombre disparador
▶ Replace: Se utiliza para sobreescribir un disparador existente.
▶ Before/After/Instead of: Siguen las mismas normas de nomenclatura
que otros identificadores en la BD Instante de ejecución del disparador
con respecto al evento que lo desencadena
▶ Evento: Tipo de orden DML sobre una tabla que provoca la activación
del disparador INSERT | DELETE | UPDATE [OF <lista de columnas>]
130
TRIGGER
Ejemplo trigger
131
Ejercicio 02
132
Ejercicio final
▶ Desarrollar PL/SQL y trigger según corresponda para resolver la
siguiente problemática en su modelo de sistema de gestión
educativa.
▶ El software debe resolver como asignar los horarios a los alumnos en
los diversos cursos y profesores y que estos últimos no tengan más
de 3 cursos por semana.
▶ El horario para la toma de cursos no debe permitir que un alumno
sin matricula activa pueda tomar clases.
▶ Mostrar a todos los alumnos que estén activos y aptos para
matricula las clases, horarios y profesores disponibles. La restricción
es que un alumno no puede tomar más de 1 curso con el mismo
profesor.
Ejercicio final HR
▶ Bibliografía
135