Knowledge Base

¿Qué es esto?

Oracle: APEX: Validación de NIF

18/11/2011 - 18/03/2019 -  Comentarios - Oracle APEX Validaciones

Crear validación del tipo función que devuelve valor booleano con este cuerpo y poner en el mensaje de error: El formato de alguno de los DNI's no es correcto

DECLARE
v_NIF VARCHAR2(1); -- Variable que contendrá la letra del DNI
BEGIN
        FOR i in 1..apex_application.g_f04.count LOOP
              -- Si el DNI tiene 9 dígitos, los 8 primeros son numeŕicos y el último es una letra seguimos
              IF LENGTH(TRIM(apex_application.g_f04(i))) = 9 AND IS_NUMBER(SUBSTR(TRIM(apex_application.g_f04(i)), 1, 8)) AND NOT
              IS_NUMBER(SUBSTR(TRIM(apex_application.g_f04(i)), 9, 1)) THEN
                      -- Calculamos la letra del DNI
                      SELECT SUBSTR('TRWAGMYFPDXBNJZSQVHLCKET',MOD(SUBSTR(apex_application.g_f04(i), 1, 8),23)+1,1) INTO v_NIF FROM dual;
                      -- Si la letra del DNI es incorrecta devolvemos falso
                      IF SUBSTR(TRIM(apex_application.g_f04(i)), 9, 1) <> v_NIF OR v_NIF IS NULL THEN
                           RETURN FALSE;
                      END IF;
              ELSE
                      RETURN FALSE;
              END IF;
        END LOOP;
        -- Si hemos salido del bucle quiere decir que todos los DNIs son correctos
        RETURN TRUE;
END;