Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/03/2008, 10:31
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Re: problemas con función

¿Puedes pasar el código completo de la función?
En principio, lo de "data truncated" está indicando que un dato ingresado o procesado no cumple con la longitud definida para ese tipo de dato, pero eso puede ser un dato entrante o un dato obtenido.
Ten en cuenta un par de cosas:
1. Una función es un procedimiento en el que todos los parámetros son de entrada, y que devuelve, por definición, un solo valor. Jamás devuelve un registro a menos que el registro tenga un sólo campo y ese campo sea el valor devuelto.
2. Una función debe tener definido el tipo de dato que devolverá, y el tipo de datos devuelto en el proceso debe forzosamente ser del mismo tipo.
3. Si la función leerá o escribirá datos DML (INSERT, UPDATE, DELETE, REPLACE) debe ir, previo al BEGIN de la función una línea indicando READS SQL DATA o WRITES SQL DATA.
4. Hay que tener cuidado en el tipo de datos manipulado, para que la longitud de los datos entrantes se corresponda con los tipos de datos esperados. Eso es importante por cuanto si, por ejemplo, intentas ingresar como parámetro un DATETIME en un CHAR, en principio lo tomará, haciendo la conversión. Pero si el CHAR de la función es de 8 caracteres (CHAR(8)), el dato se truncará, ya que DATETIME tiene 19 ('0000-00-00 00:00:00', incluyendo el espacio entre fecha y hora: 19 caracteres)