Tiempo de lectura estimado: 3 minutos
Procedimiento imprimir_Nombre ()
En este procedimiento llamado imprimir_Nombre, se recorre la columna llamada nombre.
Esta columna se encuentra dentro de la tabla clientes de la base de datos llamada tiendaonline,
Para recorrer cada fila utilizamos un cursor y el comando FETCH. En el vídeo anterior
Durante cada iteración del bucle pasará lo siguiente:
- FETCH recupera un nombre desde el cursor y lo guarda en la variable var_nombre.
Si ya no hay más filas, se activa el manejador de condiciones 'CONTINUE HANDLER FOR NOT FOUND', que
pondrá el valor de la variable var_semaforo a TRUE, lo que provoca la salida del bucle (LEAVE).
Si se recuperó un nombre correctamente, se imprime usando SELECT var_nombre AS nombre;.
*/
-- Lo primero que haremos será establecer una base de datos donde comenzaremos a trabajar:
use tiendaonline;
-- Vemos la tabla sobre la que vamos a trabajar:
select * from clientes;
-- Se borrará el procedimiento si existe.
DROP PROCEDURE if exists imprimir_Nombre;
-- Cambiamos el punto y coma por el nuevo delimitador:
DELIMITER //
-- Creamos el procedimiento con el nombre imprimir_Nombre:

CREATE PROCEDURE imprimir_Nombre()
BEGIN
-- Variable que permite salir del bucle cuando no quedan más filas:
DECLARE var_semaforo boolean default 0;
DECLARE var_nombre varchar (50);
-- Declaramos el cursor:
DECLARE cNombreCursor CURSOR FOR select c.nombre from clientes as c;
-- Cuando no queden más filas la variable se pone a true:
DECLARE continue handler for not found SET var_semaforo = 1;
-- Abrimos el cursor para poder utilizarlo:
OPEN cNombreCursor;
-- Bucle llamado recorrer:
recorrer:loop
BEGIN
-- Asigna el nombre de la columna a la varible var_nombre:
fetch cNombreCursor into var_nombre;
-- Cuando var_semaforo es true se sale del bucle.
IF var_semaforo then leave recorrer; end if;
end;
-- El nombre se encuentra dentro del bucle para imprimir un nombre por resultado:
SELECT var_nombre AS nombre;
end loop;
-- Cerramos el cursor:
CLOSE cNombreCursor;
END //
-- Devolvemos el delimitador al punto y coma:
DELIMITER ;
-- Llamamos al procedimiento imprimir_Nombre():
CALL imprimir_Nombre ();



Seguir leyendo:





