Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/01/2014, 14:31
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 2 meses
Puntos: 447
Respuesta: crear funciones

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
  1. mysql> SHOW VARIABLES LIKE "version";
  2. +---------------+--------+
  3. | Variable_name | Value  |
  4. +---------------+--------+
  5. | version       | 5.6.12 |
  6. +---------------+--------+
  7. 1 row in set (0.01 sec)
  8.  
  9. mysql> DELIMITER $$
  10. mysql> CREATE FUNCTION numprimo(n INT)
  11.     -> RETURNS INT
  12.     -> BEGIN
  13.     ->     DECLARE num INT;
  14.     ->  DECLARE i INT;
  15.     ->  DECLARE primo INT;
  16.     ->     SET i = 2;
  17.     ->  IF n < 2 THEN
  18.     ->         RETURN(0);
  19.     ->     ELSEIF n = 2 THEN
  20.     ->         RETURN(1);
  21.     ->     ELSE
  22.     ->         SET primo = 1;
  23.     ->         loop1: WHILE i <= SQRT(n) DO
  24.     ->             IF (n%i) = 0 THEN
  25.     ->                 SET primo = 0;
  26.     ->                 LEAVE loop1;
  27.     ->             END IF;
  28.     ->             SET i = i +1;
  29.     ->         END WHILE loop1;
  30.     ->
  31.     ->         RETURN (primo);
  32.     ->     END IF;
  33.     -> END; $$
  34. Query OK, 0 rows affected (0.00 sec)
  35.  
  36. mysql> DELIMITER ;
  37. mysql> SELECT numprimo(2);
  38. +-------------+
  39. | numprimo(2) |
  40. +-------------+
  41. |           1 |
  42. +-------------+
  43. 1 row in set (0.00 sec)
  44.  
  45. mysql> SELECT numprimo(4);
  46. +-------------+
  47. | numprimo(4) |
  48. +-------------+
  49. |           0 |
  50. +-------------+
  51. 1 row in set (0.00 sec)
  52.  
  53. mysql> SELECT numprimo(5);
  54. +-------------+
  55. | numprimo(5) |
  56. +-------------+
  57. |           1 |
  58. +-------------+
  59. 1 row in set (0.00 sec)
  60.  
  61. mysql> SELECT numprimo(6);
  62. +-------------+
  63. | numprimo(6) |
  64. +-------------+
  65. |           0 |
  66. +-------------+
  67. 1 row in set (0.00 sec)
  68.  
  69. mysql> SELECT numprimo(7);
  70. +-------------+
  71. | numprimo(7) |
  72. +-------------+
  73. |           1 |
  74. +-------------+
  75. 1 row in set (0.00 sec)

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