sábado, 10 de agosto de 2013

PAQUETES

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