Páginas

sábado, febrero 20, 2010

Oracle PL SQL Sobrecarga de metodos.....


La sobrecarga de métodos es una estrategia del lenguaje de programación que permite que diferentes métodos tengan el mismo nombre con diferente firma en el mismo bloque de código (sub programa, paquete o tipo de objeto). La firma especifica los valores de entrada y de salida. El lenguaje verifica cual procedimiento utilizar de acuerdo a la firma. Aquí les dejo un pequeño ejemplo.

create or replace package overload_util
is
        procedure print_log (p_buff varchar2);

   procedure get_pass (p_org_id in number, p_item in varchar2, p_exit out varchar2);
   function get_pass ( p_org_id in number, p_item in varchar2)
        return varchar2;
   procedure principal;

end overload_util;


create or replace package body overload_util
is
procedure print_log (p_buff varchar2) is
begin
dbms_output.put_line (p_buff);
end;

   procedure get_pass (
        p_org_id in number
      , p_item in varchar2
      , p_exit out varchar2)
   is
      begin
         p_exit := ' ITS A PROCEDURE';
         exception
            when others then
                print_log ('Error: '||SQLERRM );
                p_exit := 'Error: '||SQLERRM;
      end;


   function get_pass (p_org_id in number, p_item in varchar2)
      return varchar2
   is
   begin
      return 'ITS A FUNCTION';
   exception
      when others then
         print_log ('Error: '||SQLERRM );
         return 'Error: '||SQLERRM;
   end;


procedure principal
is
   vproc varchar2(50);
   vfunc varchar2(50);
begin

   get_pass(1,'ITEM', vproc);
   vfunc := get_pass (1,'ITEM');
   print_log('PROCEDURE: '||vproc);
   print_log('FUNCTION: '||vfunc);

   exception
      when others then
      print_log ('ERROR PRINCIPAL:'|| SQLERRM);
   end principal;
end overload_util;

Con el sig. bloque anónimo, previamente habilitamos y limpiamos el buffer del dbms.

declare

begin
   overload_util.principal;
end;

Resultado de la ejecución

PROCEDURE: ITS A  PROCEDURE
FUNCTION: ITS A FUNCTION