Vous êtes sur la page 1sur 9

CURSORES MYSQL ING.

LORENA BOWEN
MENDOZA
QU SON LOS CURSORES EN MYSQL?
Recuerden que cuando se consulta tablas con SELECT, MySQL
arrojaba rpidamente los registros en pantalla de una sola vez y
cumplamos lo que queramos hacer. Pero hay momentos donde
necesitamos acceder a cada registro de forma individual.
Un cursor permite acceder en tiempo real a los datos de cada fila
de una consulta. Este mecanismo es de gran utilidad cuando se
vaya a comunicar MySQL con aplicativos o realizar consultas
complejas.
COMO USAR CURSORES EN MYSQL?
Para implementar un cursor debemos tener en cuenta 4 fases de su
funcionamiento:
1. Declaracin
2. Apertura
3. Lectura
4. Cierre
1. DECLARACION
Al igual que una una variable, los cursores se declaran con la sentencia
DECLARE. Se debe declarar despus de las variables corrientes, de lo
contrario MySQL, generar un error. La sintaxis:

DECLARE nombre_cursor CURSOR FOR consulta;


DECLARE cursor_edad CURSOR FOR SELECT EDAD
FROM CLIENTE WHERE NOMBRE LIKE 'a%`;

No significa que el objeto cursor_edad vaya a guardar los datos de la


consulta a la cual esta referenciando. Lo que hace es apuntar a la
direccin de memoria del primer resultado de dicha consulta.
2. APERTURA
En la fase de declaracin la consulta a la que hace referencia el
cursor, aun no se ha ejecutado. Para ejecutarla usaremos el
comando OPEN. Sin esta apertura los resultados del cursor no
pueden ser ledos por MySQL, por lo tanto se producir un error.
Se debe tener en cuenta que al abrir el cursor este sita un
puntero a la primera fila arrojada por la consulta.
OPEN nombre_cursor;
3. LECTURA
La lectura de los resultados de un cursor se hace con el comando
FETCH. Este nos permite acceder a la primer fila generada por la
consulta. Si se vuelve a usar el cursor pasa a apuntar a la segunda
fila, luego a la tercera y as sucesivamente hasta que el cursor no
tenga resultados que referenciar.
FETCH nombre_cursor INTO variable1,variable2,...
Es importante tener variables declaradas para almacenar
temporalmente los datos de las columnas de cada fila, generadas
por la consulta. Estas variables lgicamente deben tener el
mismo tipo de dato que el valor de la columna a almacenar, y
luego relacionarlas con la sentencia INTO.
Por ejemplo, si quisiramos almacenar el id, nombre y apellido del
primer empleado de la tabla EMPLEADO, hacemos lo siguiente:
-- Declaracin de variables para el cursor
DECLARE ID INT;
DECLARE NOMBRE VARCHAR(100);
DECLARE APELLIDO VARCHAR(100);
DECLARE cursor_cliente CURSOR FOR SELECT ID, NOMBRE,
APELLIDO FROM CLIENTE;
OPEN cursor_cliente;
FETCH cursor_cliente INTO ID,NOMBRE,APELLIDO; CLOSE
cursor_cliente;
Si queremos recorrer todas las filas de la consulta, necesitaremos de
alguna estructura repetitiva, incluir el comando FETCH dentro de
un bucle permite leer todos los resultados de un cursor. Cuando el cursor
llegue al final de los resultados de la consulta, entonces el bucle termina. Pero
terminar un bucle de este tipo necesita una condicin de parada especial en
MySQL.
Existen manejadores de errores en MySQL para esta tarea,
aunque por el momento no los hemos estudiado es necesario saber
lo siguiente:
Cuando usamos FETCH en el cursor, pero ya no hay mas filas por
retornar, MySQL arroja un error llamado 02000 NO DATA
FECH. As que lo que hay que hacer es crear un manejador para
indicar que cuando suceda ese error, el programa no termine, pero
que si termine el bucle. Ejemplo:
-- Declaracin de un manejador de error tipo NOT FOUND
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET @hecho = TRUE;
Aqu indicamos que si ocurre un error tipoNOT FOUND, entonces
asignemos a la variable @hecho el valor de TRUE. Con esa
variable podremos manejar la terminacin de nuestro bucle mas
adelante.
4. CIERRE
Una vez ledo todos los resultados del cursor, procedemos a cerrar
y limpiar espacios de memoria con CLOSE.
CLOSE nombre_cursor;

Vous aimerez peut-être aussi