CSS

CSS Mobile

header

2021/05/24

SQL Cursores

 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

Labels

Code (2) 3d (1) Animated (1) Cartoon (1) Characters (1) Games (1) Notes (1) Robot (1) SQL (1) Unity (1) Unreal (1)

Cookies

credits

Total Pageviews