Tema: Firebird
Pregunta: ¿Cómo creo un procedimiento para validar RUT en Chile ?
Respuesta:
Mediante el siguiente procedimiento almacenado se puede validar el RUT en Chile mediante el uso del módulo 11.
Fuente:
http://www.dcc.uchile.cl/~mortega/mi...algoritmo.html
Código:
SET TERM ^ ;
CREATE PROCEDURE obtener_dgv
( rut integer ) RETURNS ( dgv char(1) )
AS
DECLARE VARIABLE suma integer;
DECLARE VARIABLE factor integer;
DECLARE VARIABLE rut_aux integer;
DECLARE VARIABLE posicion integer;
DECLARE VARIABLE largo integer;
DECLARE VARIABLE result1 integer;
DECLARE VARIABLE result2 integer;
DECLARE VARIABLE dig integer;
DECLARE VARIABLE dv integer;
BEGIN
suma = 0;
factor = 2;
posicion = 0;
largo = char_length(:rut);
WHILE(posicion < largo ) do
begin
dig = substring(:rut from (largo-posicion) for 1);
if (factor = 8) then factor = 2;
suma = suma + (dig * factor);
factor = factor + 1;
posicion = posicion + 1;
end
result1 = suma /11;
result2 = result1 * 11;
dv = ((suma-result2)-11)*-1;
if (dv not in(10, 11)) then dgv = dv;
if (dv = 11) then dgv = 0;
if (dv = 10) then dgv = 'K';
suspend;
END^
SET TERM ; ^
para ejecutar éste :
SELECT * FROM obtener_dgv(12345678)