Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Validar documento de identidad

Estas en el tema de Validar documento de identidad en el foro de Oracle en Foros del Web. Hola necesito crear una función para validar un DNI, el DNI es el número de identificaión personal, he creado una primera función que te da ...
  #1 (permalink)  
Antiguo 07/11/2014, 05:54
 
Fecha de Ingreso: octubre-2014
Mensajes: 17
Antigüedad: 6 años, 1 mes
Puntos: 0
Validar documento de identidad

Hola necesito crear una función para validar un DNI, el DNI es el número de identificaión personal, he creado una primera función que te da la letra, pero no se como crear la siguiente función para que llame a esta y valide los campos del DNI como correctos, este es el código que he puesto:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION DNI
  2.   (DNI IN INT)
  3. RETURN CHAR
  4. IS
  5.   lletra CHAR(10);
  6. BEGIN
  7. lletra:=DNI || '-' || substr('TRWAGMYFPDXBNJZSQVHLCKE', MOD(dni,23)+1, 1);
  8. RETURN(lletra);
  9. END;
  10.  
  11. SELECT dni(53029797) FROM dual;
  12.  
  13.  
  14. --3 -A
  15. CREATE OR REPLACE FUNCTION validni
  16. (validni IN CHAR)
  17. IS
  18. validni CHAR(10);
  19. BEGIN
  20. IF dni='' THEN
  21.     resultat:=' DNI correcto!!!'
  22.     END;

Última edición por gnzsoloyo; 07/11/2014 a las 06:27
  #2 (permalink)  
Antiguo 07/11/2014, 06:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 13 años
Puntos: 2656
Respuesta: Validar documento de identidad

Por empezar, ¿de qué país estamos hablando?
Porque DNI hay en muchos, y en el mío por ejemplo, el numero de documento no lleva letras, y sólo se puede validar contra WebServices del Ministerio del Interior... Más allá de eso, sólo podemos saber si pertenece a un local o a DNI de extranjero por el valor numérico usado.

Yo sugeriría que verifiques con algún organismo oficial, el sus webs suele haber información de como se realiza ese tipo de validaciones o de donde se puede tomar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/11/2014, 06:32
 
Fecha de Ingreso: octubre-2014
Mensajes: 17
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: Validar documento de identidad

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por empezar, ¿de qué país estamos hablando?
Porque DNI hay en muchos, y en el mío por ejemplo, el numero de documento no lleva letras, y sólo se puede validar contra WebServices del Ministerio del Interior... Más allá de eso, sólo podemos saber si pertenece a un local o a DNI de extranjero por el valor numérico usado.

Yo sugeriría que verifiques con algún organismo oficial, el sus webs suele haber información de como se realiza ese tipo de validaciones o de donde se puede tomar.
SI españa. Solamente es un codigo que lo valida como tal, no hay que consultar en ningún sitio por lo que me han dicho.
Es un ejercicio que nos han mandado, es como la función de la letra, la crea el código sin necesidad de nada más. Gracias igualmente, saludos
  #4 (permalink)  
Antiguo 07/11/2014, 06:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 13 años
Puntos: 2656
Respuesta: Validar documento de identidad

Ok. Bueno, lo que tienes hasta ahora en esa función, es correcto para Oracle, por lo que no me queda claro qué otra validación necesitas hacer..
¿Quieres que dado un DNI te valide si es correcto?
Lo único que tienes que hacer es invertir la lógica de esa misma función... No veo mucho drama en eso.

¿En qué consiste exactamente el problema?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/11/2014, 06:44
 
Fecha de Ingreso: octubre-2014
Mensajes: 17
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: Validar documento de identidad

Cita:
Iniciado por gnzsoloyo Ver Mensaje
ok. Bueno, lo que tienes hasta ahora en esa función, es correcto para oracle, por lo que no me queda claro qué otra validación necesitas hacer..
¿quieres que dado un dni te valide si es correcto?
Lo único que tienes que hacer es invertir la lógica de esa misma función... No veo mucho drama en eso.

¿en qué consiste exactamente el problema?
si, eso es. 1, en caso que
el valor sea correcto, o 0, en caso contrario.
  #6 (permalink)  
Antiguo 07/11/2014, 06:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 13 años
Puntos: 2656
Respuesta: Validar documento de identidad

Pues la lógica a cumplir con la nueva función es simple:
1) Recibes un DNI con letra incluida.
2) Eliminas todos los caracteres que no sean números.
3) Llamas a la función que genera el DNI con letra con el numero obtenido.
4) Verificas que lo recibido sea igual a lo que genera la función llamada y devuelves lo que corresponda.

Acá lo único que te falta es crear un proceso que elimine los caracteres no numéricos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 10/11/2014, 02:29
 
Fecha de Ingreso: octubre-2014
Mensajes: 17
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: Validar documento de identidad

Y eso en código como se hace?
solamente seria validar que tenga números letra y longitud de carácteres.
Gracias
  #8 (permalink)  
Antiguo 11/11/2014, 01:40
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 13 años, 5 meses
Puntos: 43
Respuesta: Validar documento de identidad

Separar los numeros y letra de un DNI es facil.


Esto te saca los numeros

Código SQL:
Ver original
  1. SELECT substr('DNI_COMPLETO',1,LENGTH('DNI_COMPLETO')-1)
  2. FROM dual;
Y esto la letra :

Código SQL:
Ver original
  1. SELECT substr('DNI_COMPLETO',LENGTH('DNI_COMPLETO'))
  2. FROM dual

Unicamente te quedaría multiplicar cada resultado por 1. Si en el primer caso no te da error, son numeros ( CORRECTO ) y si en el segundo caso te da error, es una letra ( CORRECTO ), a partir de ahí, ancha es Castilla.

De todas maneras ten en cuenta, que un DNI puede tener 6, 7 u 8 numeros, con lo cual eso de "validar longitud", no se..................
  #9 (permalink)  
Antiguo 11/11/2014, 02:47
 
Fecha de Ingreso: octubre-2014
Mensajes: 17
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: Validar documento de identidad

Al final lo he resuelto de esta forma:

CREATE OR REPLACE FUNCTION DNI
(DNI IN INT)
RETURN CHAR
IS
lletra CHAR(10);
BEGIN
lletra:=DNI || '-' || substr('TRWAGMYFPDXBNJZSQVHLCKE', MOD(dni,23)+1, 1);
RETURN(lletra);
END;

select dni(52478447) from dual;

El problemas es que ahora debo de Crear una función que calcule los dígitos de control del número de la Seguridad Social.(INSS)
y no tengo ni idea de como hacerlo

Etiquetas: identidad, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.