Hola skreal:
No nos dices donde te está marcando el error, ni tampoco nos dices en qué momento te está marcando el error, por lo tanto es algo complicado poder ayudarte...
Creo que el problema en realidad es tan simple como el quitar el (;) del último SELECT, pero a reserva de que nos digas el error, estoy sólo haciendo suposiciones.
Haciendo la prueba en un SQL 5.6.12 la función se puede crear y aparentemente funciona correctamente:
Código MySQL:
Ver original+---------------+--------+
| Variable_name
| Value | +---------------+--------+
+---------------+--------+
mysql> DELIMITER $$
-> RETURN(0);
-> RETURN(1);
-> loop1: WHILE i
<= SQRT(n
) DO -> LEAVE loop1;
->
-> RETURN (primo);
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
+-------------+
| numprimo(2) |
+-------------+
| 1 |
+-------------+
+-------------+
| numprimo(4) |
+-------------+
| 0 |
+-------------+
+-------------+
| numprimo(5) |
+-------------+
| 1 |
+-------------+
+-------------+
| numprimo(6) |
+-------------+
| 0 |
+-------------+
+-------------+
| numprimo(7) |
+-------------+
| 1 |
+-------------+
OJO: observa que antes de crear la función indico que el delimitador será el ($$), pero en cuanto termino de crear la función lo devuelvo a (;) checa a ver si es ahí el problema.
Saludos
Leo