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

Error Parsing DDL - MariaDB

Estas en el tema de Error Parsing DDL - MariaDB en el foro de Mysql en Foros del Web. Saludos, tengo un problema con una función, al ejecutarla en workbench me manda el error Error Parsing DDL - , esta es mi funcion Código: ...
  #1 (permalink)  
Antiguo 10/11/2016, 14:56
Avatar de joiscafo  
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Error Parsing DDL - MariaDB

Saludos, tengo un problema con una función, al ejecutarla en workbench me manda el error Error Parsing DDL -, esta es mi funcion

Código:
CREATE FUNCTION modaDia(fecha date, esta integer) RETURNS text CHARSET utf8 COLLATE utf8_spanish_ci
BEGIN
	declare moda text;
	
	set moda = (
	SELECT DIR_VIENTO_TXT as moda
	FROM datos15minutos
	WHERE ESTA = esta and FECHA = fecha and DIR_VIENTO_TXT <> NULL	
	GROUP BY DIR_VIENTO_TXT ORDER BY COUNT(*) DESC LIMIT 1 	
	) ;

	return moda;
END
Me manda un error en la parte de COLLATE, pero si me genera la función y me permite usarla aunque no me da ningún resultado.

Que estoy haciendo mal?.

Gracias.
  #2 (permalink)  
Antiguo 16/11/2016, 10:28
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Error Parsing DDL - MariaDB

Hola joiscafo:

Hay que revisar varios detalles:

1. No utilices los mismos nombres para parámetros y para nombres de campos, ya que esto ocasiona problemas, una sugerencia es que antepongas algun prefijo a los parámetros para diferenciarlos:

Código MySQL:
Ver original
  1. ...
  2. CREATE FUNCTION modaDia(param_fecha date, param_esta integer) RETURNS text
  3. ...

de tal suerte que cuando lo utilices sea claro que se trata de dos cosas distintas:

Código MySQL:
Ver original
  1. ...
  2.    ESTA = param_esta and
  3.    FECHA = param_fecha
  4. ...

2. NULL no es un dato como tal, sino más bien un ESTADO, por lo tanto, no puedes aplicar el operador DIFERENTE DE (<>) ni el de igualdad (=), sino que tienes que utlizar IS NOT NULL o IS NULL según lo necesites:

Código MySQL:
Ver original
  1. ...
  2. DIR_VIENTO_TXT IS NOT NULL
  3. ...

3. Trata de crear la función sin el COLLATE, para determinar si es ahí donde tienes el problema o es alguna otra parte de la consulta.

Saludos
Leo.

Etiquetas: fecha, 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 16:31.