Bloque anonimo para validar rut. Listo para convertir a PA.
DECLARE
RUT NUMBER(10) := 18479447;
DIG CHAR(1) := '0';
SUMA NUMBER(10) := 0;
FACTOR NUMBER(2) := 2;
LARGO NUMBER(2) := LENGTH(RUT);
DIGITO NUMBER(1) := 0;
CARACTERES VARCHAR(12) := '123456789K0';
BEGIN
FOR CONTADOR IN REVERSE 1..LARGO LOOP
DIGITO := SUBSTR(RUT, CONTADOR, 1);
SUMA := SUMA + DIGITO * FACTOR;
FACTOR := FACTOR + 1;
IF FACTOR > 7 THEN
FACTOR := 2;
END IF;
END LOOP;
SUMA := 11 - MOD(SUMA, 11);
IF(SUBSTR(CARACTERES, SUMA, 1) = DIG) THEN
DBMS_OUTPUT.PUT_LINE('RUT CORRECTO');
ELSE
DBMS_OUTPUT.PUT_LINE('RUT INCORRECTO');
END IF;
END;
|