miércoles, 13 de febrero de 2013

Funcion random en MySQL


En base a la necesidad de esta funcionalidad, 
he creado una funcion para suplir dicha falencia.
 
Espero que a alguien le sea de utilidad... 
 
Saludos. 
 
DROP FUNCTION IF EXISTS random;
DELIMITER //
CREATE FUNCTION random
(
   numero_inicial INT,
   numero_final INT
)
RETURNS INT
DETERMINISTIC
BEGIN
   DECLARE numero INT DEFAULT 0;
   DECLARE retorno INT;
   DROP TEMPORARY TABLE IF EXISTS randinit;
   CREATE TEMPORARY TABLE randinit (num INT NOT NULL);
   IF (numero_inicial > numero_final)
   THEN
      contador: LOOP
      IF (numero = numero_inicial)
      THEN
         LEAVE contador;
      ELSE
         SET numero = numero +1;
         INSERT INTO randinit(num) VALUES (numero);
      END IF;
      END LOOP contador;
   ELSEIF (numero_final > numero_inicial)
   THEN
      contador: LOOP
      IF (numero = numero_final)
      THEN
         LEAVE contador;
      ELSE
         SET numero = numero +1;
         INSERT INTO randinit(num) VALUES (numero);
      END IF;
      END LOOP contador;
   ELSE
      SET numero = numero_inicial;
      INSERT INTO randinit(num) VALUES (numero);
   END IF;
   SET retorno = (SELECT num FROM randinit ORDER BY RAND() LIMIT 1);
   RETURN retorno;
END//
DELIMITER ;

No hay comentarios:

Publicar un comentario