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