Este es un sencillo ejemplo de como crear un procedimiento con un cursor en MySql.
Es un cursor con la típica Select que recupera un par de variables que más tarde utilizaremos en la where de un Update, para poder actualizar uno a uno cada registro que nos interese.
Tiene un bluce (LOOP) que ira recuperando nuevos valores para el Update hasta que no tenga más datos y finalmente se salga del bucle.
El código está comentado por lo que es realmente fácil seguir los pasos, pero si tienen dudas pues a busca a Google, es broma 🙂 , si tienes dudas deja un comentario y te intento echar una mano.
El código:
DROP PROCEDURE IF EXISTS cargar_imagen; DELIMITER $$ CREATE PROCEDURE cargar_imagen ( ) BEGIN -- Variables donde almacenar el id que de la SELECT DECLARE i_idimagen BIGINT; DECLARE v_imagen VARCHAR(250); -- Variable para controlar el fin del bucle DECLARE findelbucle INTEGER DEFAULT 0; -- La SELECT que queremos DECLARE cursor_elidimagen CURSOR FOR SELECT imagen,id_producto FROM imagenes ; -- Cuando no existan mas datos findelbucle se pondra a 1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET findelbucle=1; -- DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE; OPEN cursor_elidimagen; bucle: LOOP FETCH cursor_elidimagen INTO v_imagen,i_idimagen; IF findelbucle = 1 THEN LEAVE bucle; END IF; UPDATE oc_product SET image= v_imagen WHERE model=i_idimagen; END LOOP bucle; CLOSE cursor_elidimagen; END$$ DELIMITER ; |
Si tienes alguna duda deja un comentario 😉 y no se te olvide darme un +1 en Google plus