miércoles, 7 de septiembre de 2011

Valida Rut Chileno en Pl/Sql

FUNCTION VALIDA_RUT ( p_rut in number,
                                                   p_dv  in varchar2) RETURN boolean IS

   v_rut varchar2(9);
   v_dv1 varchar2(1); 
   v_dv2 varchar2(1);

 BEGIN 
     v_rut   := lpad(p_rut,9,'0');
     v_dv1 := p_dv;
     v_dv2 := substr('123456789K0',11-mod(to_number(substr(v_rut,1,1))*4 +
                                       to_number(substr(v_rut,2,1))*3 +
                                       to_number(substr(v_rut,3,1))*2 +
                                       to_number(substr(v_rut,4,1))*7 +
                                       to_number(substr(v_rut,5,1))*6 +
                                       to_number(substr(v_rut,6,1))*5 +
                                       to_number(substr(v_rut,7,1))*4 +
                                       to_number(substr(v_rut,8,1))*3 +
                                       to_number(substr(v_rut,9,1))*2,11),1);

   if v_dv1 = v_dv2 then
      return(TRUE);
   else
      return(FALSE);
  end if;

  exception
   when others then
   return(FALSE);
END;

No hay comentarios:

Publicar un comentario