0% encontró este documento útil (0 votos)
148 vistas4 páginas

Cursores MySQL

El documento describe el uso de cursores en MySQL. Explica la sintaxis básica para crear un cursor y ejecutarlo, así como ejemplos de cursores anidados. El primer ejemplo muestra el instructor con más años de antigüedad mediante un cursor simple, mientras que el segundo ejemplo encuentra el instructor con el salario más alto usando un cursor anidado para vincular las tablas instructor y persona.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
148 vistas4 páginas

Cursores MySQL

El documento describe el uso de cursores en MySQL. Explica la sintaxis básica para crear un cursor y ejecutarlo, así como ejemplos de cursores anidados. El primer ejemplo muestra el instructor con más años de antigüedad mediante un cursor simple, mientras que el segundo ejemplo encuentra el instructor con el salario más alto usando un cursor anidado para vincular las tablas instructor y persona.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Diseño y Adm.

De Base de Datos Grupo MySQL


GESTION I/2022 UMSA- Carrera de Informática

CURSORES
Sintaxis

DROP PROCEDURE IF EXISTS


nombre_Procedimiento_cursor;
DELIMITER //
CREATE PROCEDURE Nombre_Procedimiento_cursor()
BEGIN
declaración de variables…
DECLARE NombreDelCursor CURSOR FOR [SentenciasSQL]
OPEN NombreDelCursor;
getdata:LOOP
FETCH NombreDelCursor INTO variables;
[sentencias SQL]
END LOOP;
CLOSE NombreDelCursor;
SELECT variables;
END//
DELIMITER ;

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

DROP PROCEDURE IF EXISTS cursor_instructor;


DELIMITER //
CREATE PROCEDURE cursor_instructor()
BEGIN
DECLARE xci int;
DECLARE xsalario int;
DECLARE antiguedad int default 0;
DECLARE resultado varchar(100);
DECLARE años int;
DECLARE i int default 0;
DECLARE c_instructor CURSOR FOR
SELECT ci, salario, date_format(SYSDATE(),'%Y') - date_format(fechaingreso,'%Y')
FROM instructor;
DECLARE CONTINUE HANDLER FOR NOT FOUND set i = 1;
OPEN c_instructor;
getdata:LOOP
FETCH c_instructor INTO xci, xsalario, años;
IF i = 1 THEN
LEAVE getdata;
END IF;
IF años > antiguedad THEN
set resultado = concat_ws(' ','CI:',xci,'Salario:', xsalario,'Años de antiguedad:',años);
set antiguedad = años;
END IF;
END LOOP;
CLOSE c_instructor;
SELECT resultado;
END//
DELIMITER ;

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();

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy