PL/SQL (ORACLE)
Incorpora todas las características de los lenguajes de 3ª generación.
Características
- Manejo de variables.
- Estructura modular: procedimientos y funciones.
- Estructuras de control: bifurcaciones, bucles…
- Control de excepciones.
- Programación orientada a objetos: puede construirse un lenguaje procedimental orientado a objetos.
Poder almacenar los programas en PL/SQL en la BD. Facilita:
- Instalación.
- Distribución.
- Mantenimiento de los programas.
- Reduce los costes asociados a estas tareas.
Características del lenguaje
- Lenguaje procedimental.
- Unidad de trabajo, el bloque, constituido por:
- Un conjunto de declaraciones.
- Instrucciones.
- Mecanismos de gestionar errores y excepciones.
- Soporta los comandos de SQL de consulta y manipulación de datos.
Bloques PL/SQL: Estructura básica
3 zonas:
- Zona de declaraciones: donde se declaran objetos locales (variables, constantes…).
- Conjunto de instrucciones: Begin + instrucciones + End (End y Begin son obligatorias).
- Tratamiento de excepciones: es opcional.
Definición de datos compatibles con SQL
PL/SQL permite declarar una variable del mismo tipo que otra variable.
Ej: Nombre_act emple.nombre%type
Se crea una variable del mismo tipo que la de nombre en emple.
%rowtype guarda una fila completa en una variable.
Mi_fila empleados%rowtype;
Estructuras de control PL/SQL
2 tipos: Alternativas y repetitivas.
Alternativas
- Simple.
- Doble.
- Múltiple.
Repetitivas
- Mientras (while)
- Para (for)
- Iterar… fin iterar -> End loop
- Salir si -> Exit when
Soporte para órdenes de manipulación de datos
Usar los comandos de SQL. Dentro de cualquier programa PL/SQL podemos ejecutar cualquier orden de manipulación de datos.
Soporte para consultas
Permite ejecutar cualquier consulta admitida por la base de datos.
Limitaciones: solo puede devolver una fila.
Estructura modular
Bloques anónimos
- No tienen nombre.
- Se ejecutan en el servidor pero no se guardan.
- La zona de declaraciones comienza con declare.
Subprogramas: procedimientos y funciones
- Bloques PL/SQL con nombre.
- Se compilan, se almacenan y se ejecutan en la BD Oracle.
- Tienen una cabecera que incluye el nombre del subprograma, los parámetros y el tipo de valor de retorno (funciones).
- Zona de declaraciones con IS o AS.
Tipos de dato
Escalares
Almacena valores simples.
- Carácter.
- Numérico.
- Booleano.
- Fecha hora.
- Otros.
Compuestos
- Tablas indexadas.
- Tabla anidadas.
- V arrays.
- Objetos.
Referencias
- Ref cursor (cursores).
- Ref (punteros).
LOB
Almacenar objetos de grandes dimensiones.
Identificadores
Se utilizan para nombrar objetos (variables, constantes, excepciones, etc)
- 1 a 30 caracteres.
- Empiezan con una letra, y los siguientes caracteres son alfanuméricos (y $, #, _).
- No admite espacios, signos de puntuación…
SUBPROGRAMAS: PROCEDIMIENTOS Y FUNCIONES
Cabecera o especificación
- Nombre.
- Parámetros y tipo.
- Tipo de valor de retorno (funciones).
Cuerpo
- Declaración (opcional).
- Instrucciones.
- Manejo de excepciones (opcional).
Parámetros
- Dos tipos:
- Actuales o reales: variables indicadas en la llamada al subprograma.
- Formales: declarados en la especificación del programa.
- Otros:
- IN: entrada.
- OUT: salida.
- IN OUT: actualizaciones.
Triggers
Son bloques PL/SQL almacenados que se ejecutan automáticamente cuando se producen varios eventos. Hay tres tipos:
- Disparadores de tabla: asociados a una tabla (insert, update, delete).
- De vista: asociados a la vista.
- Del sistema: cambio de usuario, arranque, BD…
Se utilizan para:
- Implementar restricciones complejas de seguridad o integridad.
- Manipulaciones sobre vistas.
- Prevenir transacciones erróneas.
- Implementar reglas administrativas.
- Generar automáticamente valores derivados.
- Auditar las actualizaciones y enviar alertas.
- Gestionar réplicas remotas de la tabla.
Valores NEW y OLD
:old.nombrecolumna hace referencia al valor anterior a la actualización.
:new.nombrecolumna hace referencia al valor posterior.
Evento: delete -> old.columna. insert -> new.columna. update: ambos.
En la cláusula when utilizamos old, new sin :.
Disparadores de sustitución
Se ejecutan en lugar de la orden de manipulación que produce el disparo (trigger).
Disparadores del sistema
Se dispara cuando ocurre un evento del sistema o un evento de definición de datos (DDL).
Activar, desactivar, compilar trigger
Activar: alter trigger nombre enable.
Desactivar: alter trigger nombre disable.
Compilar: alter trigger nombre compile.
Eliminar: drop trigger nombre.
Excepciones
Tratar errores a tiempo real.