Sunteți pe pagina 1din 5

Descripción

Desarrollo de
Aplicaciones
con Bases de
Datos
Descripción de los paquetes
Un paquete es un conjunto de procedimientos y funciones compuesto de dos
partes. La primera es la especificación de los procedimientos y funciones que
compondrán el paquete y la segunda –llamada cuerpo del paquete– contiene el
código de los procedimientos y funciones que fueron especificados en la primera
parte.

Una gran ventaja que nos provee un motor de base de datos como Oracle es la
posibilidad de programar en forma modular, clara y eficiente. Esto lo permite la
utilización de paquetes, que nos dan la posibilidad de embeber dentro de él
declaraciones de variables, definiciones de tipos de datos, procedimientos y
funciones. De esta forma tenemos una agrupación lógica y ordenada que nos
permite no solo mejorar la calidad de diseño de nuestras aplicaciones, sino
también optimizar el desempeño de ellas.

Los paquetes están conformados por dos partes bien diferenciadas: por un lado,
su especificación, cuya existencia es de carácter obligatorio, y, por otro lado, el
cuerpo, cuya existencia no es de carácter obligatorio.

En la especificación es en donde se declaran:

 los tipos de variables;


 constantes;
 excepciones;
 cursores;
 procedimientos;
 funciones.

Estos podrán ser invocados desde fuera del paquete por cualquier tipo de
aplicación.

En el cuerpo del paquete, se desarrollan las especificaciones de este; contiene las


declaraciones privadas y los detalles de implementación. Todo esto está oculto
para las aplicaciones externas, funcionando de esta forma como una “caja negra”
para ellas. Solo las declaraciones hechas en la especificación del paquete son
visibles y accesibles desde fuera del paquete (por otras aplicaciones o
procedimientos almacenados), de modo que los detalles de implementación del
cuerpo del paquete quedan totalmente ocultos e inaccesibles para el exterior.
Para ejecutar o acceder a los elementos que están dentro de un paquete, se
los debe mencionar con el nombre del paquete seguido por un punto y luego
el nombre del objeto, donde obviamente el objeto puede ser: tipos de
variables, constantes, excepciones, cursores, procedimientos y funciones.

Figura 1:

paquete.objeto

Para referenciar a los objetos dentro del mismo paquete donde fueron
declarados, no es necesario mencionarlos, sino que deberían ser
referenciados directamente por su propio nombre.

Siguiendo la parte declarativa del paquete, opcionalmente se puede realizar


una sección iniciativa donde se le da valor inicial a cada una de las variables.
La sección de inicialización se ejecuta solo la primera vez que una aplicación
referencia a un paquete, esto es, se ejecuta solo una vez por sesión.

La especificación de un paquete y su cuerpo se crean por separado; por lo


tanto, la creación de los paquetes consta de dos fases:

 Crear la cabecera del paquete, donde se definen los procedimientos,


funciones, variables, cursores, etcétera, disponibles para su uso posterior
fuera del paquete. En esta parte solo se declaran los objetos, no se
implementa el código. La cabecera es la interfaz con las aplicaciones.

 Crear el cuerpo del paquete, donde se definen los bloques de código de


las funciones y los procedimientos definidos en la cabecera del paquete.

Para crear la cabecera de un paquete, utilizamos la siguiente instrucción:

Figura 2:

create or replace package nombre_de_paquete is

< span class = "comentario" > -- declaraciones </span>

end;
Figura 3:

create [or replace] package <pkgname>


is

-- Declaraciones de tipos y registros públicas


{[type <typename> is <datatype>;]}

-- Declaraciones de variables y constantes públicas


-- También podemos declarar cursores
{[<constantname> constant <datatype> := <valor>;]}
{[<variablename> <datatype>;]}

-- Declaraciones de procedimientos y funciones públicas


{[function <functionname>(<parameter> <datatype>,...)
return <datatype>;]}

{[procedure <procedurename>(<parameter> <datatype>, ...);]}

end <pkgname>;
Referencias

Reinosa, E., Maldonado, C., Muñoz, E., Damiano, L. y Abrutsky, M. (2012).


Capítulo 4 – Lenguaje Procedimental como extensión de PL/SQL. En Autores,
Base de Datos (pp. 133-154). Buenos Aires, AR: Alfaomega.

S-ar putea să vă placă și