Cursores en MySQL
- Estructura de control / bucle para recorrer el resultado de una consulta
- Guarda el resultado en variables o procesa individualmente las filas
devueltas para realizar operaciones.
- En mysql se crean dentro de las funciones y procedimientos almacenados.
Crear un cursor: (Dentro de un procedimiento)
DELIMITER //
CREATE PROCEDURE EJEMPLO_PROC()
BEGIN
/* Una variable para guardar el resultado */
DECLARE TOTAL INT;
/* Una variable para determinar que hemos acabado */
DECLARE DONE BOOL DEFAULT FALSE;
/* El cursor */
DECLARE CUR_1 CURSOR FOR
/* Los datos por los que va a iterar */
SELECT COUNT(*) FROM TABLE_NAME
/* Manejador de error NOT FOUND / Acabado */
DECLARE CONTINUE HANDLER
FOR NOT FOUND
SET DONE = TRUE;
/* Abrimos el cursor. Apunta a la primera fila del resultado. */
OPEN CUR_1;
/* Bucle de lectura */
LOOP_1 : LOOP
/* Guardamos el resultado en la variable */
FETCH CUR_1 INTO TOTAL;
/* Si has acabado sal del bucle */
IF DONE THEN
LEAVE LOOP_1;
END IF;
END LOOP LOOP1;
/* Cerramos el cursor */
CLOSE CUR_1;
/* Opcional. Mostramos el resultado */
SELECT TOTAL;
END //
Todo junto:
CREATE PROCEDURE EJEMPLO_PROC()BEGIN
DECLARE TOTAL INT;
DECLARE DONE BOOL DEFAULT FALSE;
DECLARE CUR_1 CURSOR FOR
/* Consulta. Los datos
por los que va a iterar */
DECLARE CONTINUE HANDLER
FOR NOT FOUND
SET DONE = TRUE;
OPEN CUR_1;LOOP_1 : LOOP
FETCH CUR_1 INTO TOTAL;IF DONE THEN
LEAVE LOOP_1;
END IF;
END LOOP LOOP1;
CLOSE CUR_1;
END //
No comments:
Post a Comment