rut
Publicado por hsantander (24 intervenciones) el 16/02/2005 14:03:38
hola amigos del foro,
Tengo el siguiente problema, cree una funcion para validar el rut, funciona bien hasta que le ingreso un rut con digito verificador K.
Alguien tiene una que funcione bien?
esta es la funcion que tengo
create or replace function vrut(prut in varchar)
return integer is
vdig integer :=0;
vsuma integer :=0;
resultado integer :=0;
begin
vsuma := substr(prut,1,1) * 3;
vsuma := vsuma + substr(prut,2.1) * 2;
vsuma := vsuma + substr(prut,4.1) * 7;
vsuma := vsuma + substr(prut,5.1) * 6;
vsuma := vsuma + substr(prut,6.1) * 5;
vsuma := vsuma + substr(prut,8.1) * 4;
vsuma := vsuma + substr(prut,9.1) * 3;
vsuma := vsuma + substr(prut,10.1) * 2;
while (vsuma > 11) loop
vsuma := vsuma - 11;
end loop;
vdig := 11 - vsuma;
if(vdig = 11) and (substr(prut,12,1) = 'k') then
resultado := 1;
if(vdig = 10) and (substr(prut,12,1) = 0) then
resultado := 1;
else
resultado := 0;
end if;
return(resultado);
end;
/
que hago para arreglarla?????
Tengo el siguiente problema, cree una funcion para validar el rut, funciona bien hasta que le ingreso un rut con digito verificador K.
Alguien tiene una que funcione bien?
esta es la funcion que tengo
create or replace function vrut(prut in varchar)
return integer is
vdig integer :=0;
vsuma integer :=0;
resultado integer :=0;
begin
vsuma := substr(prut,1,1) * 3;
vsuma := vsuma + substr(prut,2.1) * 2;
vsuma := vsuma + substr(prut,4.1) * 7;
vsuma := vsuma + substr(prut,5.1) * 6;
vsuma := vsuma + substr(prut,6.1) * 5;
vsuma := vsuma + substr(prut,8.1) * 4;
vsuma := vsuma + substr(prut,9.1) * 3;
vsuma := vsuma + substr(prut,10.1) * 2;
while (vsuma > 11) loop
vsuma := vsuma - 11;
end loop;
vdig := 11 - vsuma;
if(vdig = 11) and (substr(prut,12,1) = 'k') then
resultado := 1;
if(vdig = 10) and (substr(prut,12,1) = 0) then
resultado := 1;
else
resultado := 0;
end if;
return(resultado);
end;
/
que hago para arreglarla?????
Valora esta pregunta


0