Crear un paquete (Package) en PL/SQL Oracle



Un paquete es  bloque de código que se almacena en la base de datos, un paquete está compuesto por una especificación y un cuerpo, en la especificación se declaran los objetos que se van a utilizar, en el cuerpo se detalla la operación que realizara el objeto, como por ejemplo realizar un insert, un paquete puede tener   uno o más procedimientos, funciones y variables.

Sentencia Base Especificación:

create or replace package nombre_paquete is --Creación especificación del paquete
      --Variables
  --Funciones, procedimientos
  function nombre_objeto(variable tipo_de_variable) return tipo_de_variable;--Creación del objeto
 
end nombre_paquete;--Fin especificación del paquete

Sentencia Base Cuerpo:

create or replace package body nombre_paquete is --Creacion del cuerpo se le agrega body
  --Variables
  --Funciones, procedimientos

  function nombre_objeto(variable tipo_de_variable) return tipo_de_variable;--Creación del objeto
  begin --Inicio de la funcion
   
    return valor_de_retorno; --Retorna la variable
   
  end nombre_objeto; --Fin del objeto

end nombre_paquete; --Fin del paquete

Un paquete puede ser llamado por una otros objetos paquetes, funciones, procedimientos y bloques anónimos, se debe llamar el objeto utilizando el nombre del paquete punto(.) nombre del objeto. (Nombre_paquete.nombre_objeto), no todos los objetos que usa el paquete deben estar declarados en la especificación, pero si estos no son declarados en la especificación no podrán ser llamados por ningún otro objeto, estos objetos podrán utilizarse internamente en el paquete en el body.

Ejemplo: Se solicita la creación de una función que permita devolver una cadena de texto en mayúsculas y otra en minúsculas.

--Especificación:
create or replace package utilidades is

  function mayusculas(texto varchar2) return varchar2;
 
  function minisculas(texto varchar2) return varchar2;
 
end utilidades;

--Cuerpo:
create or replace package body utilidades is

  function mayusculas(texto varchar2) return varchar2 is
  begin
    return upper(texto);
  end mayusculas;
 
  function minisculas(texto varchar2) return varchar2 is 
  begin
    return lower(texto);
  end minisculas;
 
end utilidades;

--Llamado desde un bloque anónimo

declare
  minusculas varchar2(30);
  mayusculas varchar2(30);
begin
  minusculas := utilidades_kkk.minisculas('cArLOs MaRio ConZalEZ');
  mayusculas := utilidades_kkk.mayusculas('cArLOs MaRio ConZalEZ');
 
  dbms_output.put_line(minusculas);
  dbms_output.put_line(mayusculas);
end;

Output:

1 comentario: