Blog de Gonzalo

CREAR CURSORES EN MYSQL

Hace un tiempo escribí sobre procedimientos y funciones almacenados en mysql y hoy voy a hablar sobre como crear cursores en mysql, que son bucles que sirven para recorrer el resultado de una query y guardar dicho resultado en variables o hacer operaciones con otras tablas. Para poder crear cursores hay que saber primero como crear procedimientos y funciones almacenados en mysql ya que en mysql se crean dentro de las funciones y procedimientos almacenados.
El siguiente ejemplo muestra el total de artículos de una categoría de un blog.


DELIMITER $$

DROP PROCEDURE IF EXISTS articulo $$

CREATE PROCEDURE articulo(param_categoria INT)

BEGIN

//Se declara variable donde se va a guardar el valor total
DECLARE TOTAL INT;

//Se declara el cursor con el select con cuyos datos se va a iterar
DECLARE articulos_categoria_cursor CURSOR FOR

SELECT COUNT(*) FROM articulos WHERE id_categoria = param_categoria;

//Declaración de un manejador de error tipo NOT FOUND
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE;

//Se abre el cursor. Al abrir el cursor este sitúa un puntero a la primera fila del resultado de la consulta.
OPEN articulos_categoria_cursor;

//Empieza el bucle de lectura
loop1: LOOP
//Se guarda el resultado en la variable, hay una variable y un campo en el SELECT de la declaración del cursor
 FETCH articulos_categoria_cursor INTO TOTAL;

//Se sale del bucle cuando no hay elementos por recorrer
 IF @hecho THEN
 LEAVE loop1;
 END IF;


END LOOP loop1;

//Se cierra el cursor
CLOSE articulos_categoria_cursor;

//Se muestra el resultado
SELECT TOTAL;

END

Como se puede ver este cursor es bastante sencillito. Espero que os haya parecido útil.

Compartir en twitter