Uno de los problemas q ue tiene el parser de MySQL es que determina la ubicación del error como nacida en el punto siguiente al último que pudo parsear. En este caso, linea 4: "DECLARE ocupacion INT;". Pero eso no quiere decir que ESE sea el punto del error. A veces hay que cavar bastante hacia adelante o hacia atrás, para poder encontrarlo.
Por caso: Fíjate que en la línea 7 tienes esta comparación:
Cita: IF ocupacion <=> NULL THEN
return 0;
ELSE
return ocupacion;
END IF;
Eso no tiene sentido. Ese caso comparativo no existe en ningún lenguaje.
En todo caso, si lo que quieres es definir "diferente de", deberías poner
Código:
IF ocupacion <> NULL THEN
return 0;
ELSE
return ocupacion;
END IF;
Es muy probable que ese sea el error.
Prueba y me cuentas.