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

Validar CUIT en mysql

Estas en el tema de Validar CUIT en mysql en el foro de Mysql en Foros del Web. Necesitaba una funcion que me valide los cuit desde mysql, encontre una en postgresql y la adapte a mysql, ya que no encontre una hecha ...
  #1 (permalink)  
Antiguo 12/08/2010, 14:17
 
Fecha de Ingreso: junio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Información Validar CUIT en mysql

Necesitaba una funcion que me valide los cuit desde mysql, encontre una en postgresql y la adapte a mysql, ya que no encontre una hecha en mysql.

Retorna 0 si el cuit es invalido y 1 si es valido.
Hay que pasarle el numero de corrido sin los guiones.

aca va el codigo por si alguno la necesita...

CREATE FUNCTION `validar_cuit`(
CUIT BIGINT
)
RETURNS varchar(18) CHARSET latin1
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN

DECLARE RES, DIG, NUM BIGINT;
DECLARE i INT;


IF LENGTH(CUIT) != 11 OR SUBSTR(CUIT, 1, 2) = '00' THEN
RETURN 0;
END IF;

SET RES = 0;
SET i = 1;
WHILE i < 11 DO
SET NUM = (SUBSTR(CUIT, I, 1));

IF (i = 1 OR i = 7) THEN
SET RES = RES + NUM * 5;
ELSEIF (I = 2 OR I = 8) THEN
SET RES = RES + NUM * 4;
ELSEIF (I = 3 OR I = 9) THEN
SET RES = RES + NUM * 3;
ELSEIF (I = 4 OR I = 10) THEN
SET RES = RES + NUM * 2;
ELSEIF (I = 5) THEN
SET RES = RES + NUM * 7;
ELSEIF (I = 6) THEN
SET RES = RES + NUM * 6;
END IF;
SET i = i+1;
END WHILE;


SET DIG = 11 - MOD(RES,11);
IF DIG = 11 THEN
SET DIG = 0;
END IF;

IF DIG = (SUBSTR(CUIT,11,1)) THEN
RETURN 1;
ELSE
RETURN 0;
END IF;


END;
  #2 (permalink)  
Antiguo 12/08/2010, 15:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Validar CUIT en mysql

Como concepto es interesante, pero no es funcional ni optimo.
Nunca he entendido la lógica de hacer validaciones en la base de datos. Validar no es la función principal de una base, sino la de responder consultas. Las validaciones se deben hacer en la capa de negocios o como mucho en la capa de usuarios. Para ello los lenguajes de programación cuentan con muchos más recursos que el SQL.
La idea puede parecer buena, pero no lo es.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
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 22:54.