Introducción a PL/SQL en Oracle

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:

  1. Zona de declaraciones: donde se declaran objetos locales (variables, constantes…).
  2. Conjunto de instrucciones: Begin + instrucciones + End (End y Begin son obligatorias).
  3. 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:

  1. Disparadores de tabla: asociados a una tabla (insert, update, delete).
  2. De vista: asociados a la vista.
  3. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.