Cursores MySQL
Cursores MySQL
CURSORES
Sintaxis
Sintaxis de Ejecución
CALL nombre_Procedimiento_cursor();
Ejemplo 1:
crear un cursor que muestre el ci, salario y los años de antigüedad del instructor con más años
de antigüedad
Diseño y Adm. De Base de Datos Grupo MySQL
GESTION I/2022 UMSA- Carrera de Informática
Ejecución
CALL cursor_instructor();
Diseño y Adm. De Base de Datos Grupo MySQL
GESTION I/2022 UMSA- Carrera de Informática
CURSORES ANIDADOS
Ejemplo 2: crear un cursor que muestre el ci, nombre completo y sexo del instructor con el
salario más alto
DROP PROCEDURE IF EXISTS cursor_instructor;
DELIMITER //
CREATE PROCEDURE cursor_instructor()
BEGIN
DECLARE xci int;
DECLARE xsalario int;
DECLARE xnombre varchar(50);
DECLARE xsexo varchar(20);
DECLARE maxs int default 0;
DECLARE resultado varchar(100);
DECLARE i int default 0;
DECLARE c_instructor CURSOR FOR SELECT ci, salario
FROM instructor;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET i = 1;
OPEN c_instructor;
getdata1:LOOP
FETCH c_instructor INTO xci, xsalario;
IF i = 1 THEN
LEAVE getdata1;
END IF;
IF xsalario > maxs THEN
BEGIN
DECLARE j int default 0;
DECLARE instructor_persona CURSOR FOR
SELECT concat_ws(' ',apellidopaterno, apellidomaterno, nombre), sexo
FROM persona
WHERE ci = xci;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET j = 1;
OPEN instructor_persona;
getdata2:LOOP
FETCH instructor_persona INTO xnombre, xsexo;
IF j = 1 THEN
LEAVE getdata2;
END IF;
set resultado = concat_ws(' ','CI:',xci,'Apellidos y Nombre:',xnombre,'Salario:',xsalario,'Sexo:' ,xsexo);
set maxs = xsalario;
End LOOP;
CLOSE instructor_persona;
END;
END IF;
END LOOP;
CLOSE c_instructor;
SELECT resultado AS ;
END//
DELIMITER ;
Diseño y Adm. De Base de Datos Grupo MySQL
GESTION I/2022 UMSA- Carrera de Informática
Ejecución
CALL cursor_instructor();