Paquetes (package) en Oracle

Los paquetes en Oracle sirven para agrupar y organizar funcionalidades en una base de datos. Son estructuras que agrupan objetos PL/SQL (funciones, procedimientos, tipos, etc.). Ello nos va a permitir tener programas estructurados agrupados por funcionalidades.
Un paquete de Oracle se compone de dos elementos: 
  • La especificación (cabecera) y
  • El cuerpo
La especificación es la interfaz de las funciones y procedimientos que se van a implmentar en el cuerpo, es algo parecido a las cabeceras en el lenguaje de programación C. La sintaxis general es la siguiente:
CREATE [OR REPLACE] PACKAGE <nombre_del_paquete> is 

  -- Declaración de tipos:
  TYPE <nombreTipo> IS <tipo>;

  -- Declaracion de variables y constantes
  <nombreConstante> CONSTANT <tipo> := <valor>;
  <nombreVariable> <tipo>;

  -- Declaraciones de funciones y procedimientos
  FUNCTION <nombreFuncion>(<parametro> <tipo>,...) RETURN <tipo>;
  PROCEDURE <nombreProcedimiento>(<parametro> <tipo>, ...);

END <nombre_del_paquete>


El cuerpo no es más que la implementación de la especificación que hemos realizado. Por tanto, el cuerpo del paquete debe implementar lo que se ha declarado en la especificación. La sintaxis del cuerpo es parecida a la de la especificación, con la diferencia de que incluimos la implementación de cada procedimiento y función. Declaramos el cuerpo con la palabra clave BODY. La sintaxis general es la siguiente:
CREATE [OR REPLACE] PACKAGE BODY <nombre_del_paquete> IS
   
  -- Declaraciones de tipos y registros privados
  TYPE <TypeName> IS <tipo>;
  
  -- Declaraciones de variables y constantes privadas
  <nombreConstante> CONSTANT <tipo> := <valor>;
  <nombreVariable> <tipo>;

  -- Implementacion de procedimientos y funciones 
  FUNCTION <nombreFuncion>(<parametro> <tipo>,...) RETURN <tipo> IS
    -- Variables locales de la funcion
  BEGIN
    -- Implementación de la función
    return <resultado>;
  [EXCEPTION]
    -- Control de excepciones
  END;
  
  PROCEDURE <nombreProcedimiento>(<parametro> <tipo>, ...) IS 
   -- Variables locales del procedimiento
  BEGIN
    -- Implementacion de procedimiento
  [EXCEPTION]
    -- Control de excepciones
  END;

END <nombre_del_paquete>;


Espero que os sirva, próximamente escribiré sobre procedimientos y funciones con algunos ejemplos.

Un saludo!
Share:
spacer

2 comentarios: