Package en Oracle

Package en Oracle

Los paquetes (Package) son objetos de esquema que agrupan los tipos, variables y subprogramas PL/SQL relacionados lógicamente.

Un package tiene dos partes :

  • Especificación del package
  • Cuerpo o definición del package

Especificación de package

La especificación es la interfaz del paquete. Sólo se DECLARA los tipos, variables, constantes, excepciones, cursores y subprogramas que se pueden hacer referencia desde fuera del paquete. En otras palabras, contiene toda la información sobre el contenido del paquete, pero excluye el código de los subprogramas.

Todos los objetos colocados en la especificación se llaman objetos públicos. Cualquier subprograma no incluido en la especificación del paquete pero codificado en el cuerpo del paquete se denomina objeto privado.

El fragmento de código siguiente muestra una especificación de paquete que tiene un procedimiento único. Puede tener muchas variables globales definidas y múltiples procedimientos o funciones dentro de un paquete.

Cuerpo del Package

El cuerpo del paquete tiene los códigos para varios métodos declarados en la especificación del paquete y otras declaraciones privadas, que están ocultas del código fuera del paquete.

La sentencia CREATE PACKAGE BODY se utiliza para crear el cuerpo del paquete. El fragmento de código siguiente muestra la declaración del cuerpo del paquete para el paquete P_CALCULAR_PROMEDIO creado anteriormente. Asumí que ya tenemos la tabla NOTAS, ALUMNOS creadas en nuestra base de datos.

Uso de los elementos del package

Se accede a los elementos del package (variables, procedimientos o funciones) con la siguiente sintaxis:

Tenga en cuenta que ya hemos creado el paquete anterior en nuestro esquema de base de datos, el siguiente programa utiliza el método p_calcular_promedio del paquete PKG_ALUMNO

En conclusión

En relación a su ejecución, cuando un procedimiento o función que está definido dentro de un paquete es llamado por primera vez, todo el paquete es ingresado a memoria. Por lo tanto, posteriores llamadas al mismo u otros sub-programas dentro de ese paquete realizarán un acceso a memoria en lugar de a disco. Esto no sucede con procedimientos y funciones estándares.

Deja un comentario

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.