PAQUETE
Un paquete es una estructura
que agrupa objetos de PL/SQL compilados(procedures, funciones, variables, tipos
...) en la base de datos. Esto nos permite agrupar la funcionalidad de los
procesos en programas.
Lo primero que
debemos tener en cuenta es que los paquetes están formados por dos partes:
la especificación y el cuerpo. La especificación
del un paquete y su cuerpo se crean por separado.
La
especificación es la interfaz con las aplicaciones. En ella es posible declarar
los tipos, variables, constantes, excepciones, cursores y subprogramas
disponibles para su uso posterior desde fuera del paquete. En la especificación
del paquete sólo se declaran los objetos (procedures, funciones, variables
...), no se implementa el código. Los objetos declarados en la especificación
del paquete son accesibles desde fuera del paquete por otro script de PL/SQL o
programa. Haciendo una analogía con el mundo de C, la especificación es como el
archivo de cabecera de un programa en C.
Para crear la
especificación de un paquete la sintaxis general es la siguiente:
CREATE [OR REPLACE] PACKAGE <pkgName> IS -- Declaraciones de tipos y registros públicas {[TYPE <TypeName> IS <Datatype>;]} -- Declaraciones de variables y constantes publicas -- 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>;
|
El cuerpo en la implementación
del paquete. El cuerpo del paquete debe implementar lo que se declaró
inicialmente en la especificación. Es el donde debemos escribir el código de
los subprogramas. En el cuerpo de un package podemos declarar nuevos
subprogramas y tipos, pero estos seran privados para el propio
package.
La sintaxis general para crear
el cuerpo de un paquete es muy parecida a la de la especificación, tan solo se
añade la palabra clave BODY, y se implementa el código de los
subprogramas.
CREATE [OR REPLACE] PACKAGE BODY <pkgName> IS -- Declaraciones de tipos y registros privados {[TYPE <TypeName> IS <Datatype>;]} -- Declaraciones de variables y constantes privadas -- También podemos declarar cursores {[<ConstantName> CONSTANT <Datatype> := <valor>;]} {[<VariableName> <Datatype>;]}
--
Implementacion de procedimientos y funciones
FUNCTION <FunctionName>(<Parameter> <Datatype>,...) RETURN <Datatype> IS -- Variables locales de la funcion BEGIN -- Implementeacion de la funcion return(<Result>); [EXCEPTION] -- Control de excepciones END; PROCEDURE <ProcedureName>(<Parameter> <Datatype>, ...) IS -- Variables locales de la funcion BEGIN -- Implementacion de procedimiento [EXCEPTION] -- Control de excepciones END;
END <pkgName>;
|
No hay comentarios:
Publicar un comentario