PL/SQL : Paquetes

Un paquete PL/SQL es una agrupación lógica de conceptos PL/SQL. Una de las ventajas de los paquetes es que permite la MODULARIDAD. Permitiendo agrupaciones lógicas. Permiten un diseño más sencillo, eficaz y un mejor rendimiento.

Otra ventaja es la de permitirnos la SOBRECARGA de modo que podemos crear procedimientos o funciones con el mismo nombre y con diferentes parametros en el mismo paquete

Descripción

Un paquete está compuesto de dos partes:

  • Especificación
  • Cuerpo

Un paquete puede contener métodos privados y públicos

  • Todo procedimiento declarado en la Especificación tiene carácter público.
  • Todo procedimiento declarado y desarrollado en el cuerpo tiene carácter privado y es sólo visible por los miembros del paquete.

SINTAXIS Las variables pueden ser Locales o Globales.

  • Toda variable definida dentro de un subprograma es local
  • Toda variable definida fuera de un subprograma es global

Los paquetes se pueden declarar en dos partes. Por un lado la cabecera y por otro el cuerpo. Esto facilita su posterior manipulación.

SINTAXIS

Para crear la cabecera del paquete:

CREATE [o REPLACE ] PACKAGE nombre_del_paquete
IS | AS
  declaración de variables públicas
  declaración de los miembros y funciones públicas
END nombre_del_paquete;

para crear el cuerpo del paquete:

CREATE [ o REPLACE ] PACKAGE BODY nombre_del_paquete
IS | AS
  declaración de las variables privadas
  cuerpo de los miembros y funciones
END nombre_del_paquete;

EJEMPLO

Cabecera:

CREATE OR REPLACE  PACKAGE mi_primer_paquete IS

	g_variable NUMBER :=10;
	PROCEDURE asignar_g_variable (v_variable  IN NUMBER);
END mi_primer_paquete;
/

cuerpo:

CREATE OR REPLACE PACKAGE BODY mi_primer_paquete IS
-- primera funcion. 
-- funcion privada porque no está en la cabecera
FUNCTION  validar (v_a_validar IN NUMBER ) RETURN BOOLEAN
 IS
  v_maximo NUMBER :=100;
 BEGIN
  select max(COMMISSION_PCT)
  into v_maximo
  from employees;
  
  IF v_maximo > v_a_validar THEN 
        RETURN(TRUE);
  ELSE 
        RETURN(FALSE);
  END IF;
END validar;
-- hasta aqui.

-- segunda funcion (bueno, en realidad es un procedimiento)
-- funcion pública porque si que está en la cabecera
PROCEDURE asignar_g_variable (v_variable  IN NUMBER)
IS
  v_valido BOOLEAN;
BEGIN
 
  v_valido :=  validar(v_variable );
  IF v_valido = TRUE THEN
	g_variable := v_variable;
	DBMS_OUTPUT.PUT_LINE('o.k. the number is correct');
  ELSE
	DBMS_OUTPUT.PUT_LINE('the number is incorrect');
    RAISE_APPLICATION_ERROR(-20210, 'numero invalido');
  END IF;
END asignar_g_variable;
END mi_primer_paquete;
/

Finalmente, se llama a los programas de un paquete de la forma habitual:

execute  mi_primer_paquete.asignar_g_variable(25);

ELIMINACIÓN

Como siempre:

DROP PACKAGE nombre_del_paquete;

o si sólo quieres borrar el cuerpo del paquete:

DROP PACKAGE BODY nombre_del_paquete;

SOBRECARGA

La sobrecarga de métodos es la técnica mediante la cual se utiliza el mismo nombre para diferentes subprogramas dentro de un paquete. La diferencia entre los métodos es el número y orden de parámetros.

Restricciones

  • So
 
plsql/7.txt · Última modificación: 2008/05/13 10:00 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki