mi sembra che questa funzioni:

codice:
DELIMITER //
DROP PROCEDURE IF EXISTS oc_scarica_giacenza_oggi //
CREATE PROCEDURE oc_scarica_giacenza_oggi()
    NO SQL
BEGIN
    DECLARE qta INT;
    DECLARE model VARCHAR(64);
    DECLARE finished INT DEFAULT 0;
    DECLARE curs CURSOR FOR SELECT oop.model    codice,
                                   oop.quantity qta
                            FROM oc_order oo
                                     INNER JOIN oc_order_product oop ON oo.order_id = oop.order_id
                            WHERE DATE(oo.date_modified) = DATE(NOW())
                              AND oo.order_status_id = 5;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;

    OPEN curs;
    setGiac:
    LOOP
        FETCH curs INTO model, qta;

        IF finished = 1 THEN
            LEAVE setGiac;
        END IF;

        UPDATE giacenze SET giacenza_qta = (giacenza_qta - qta) WHERE giacenza_id = CAST(model AS SIGNED);
    END LOOP setGiac;
    CLOSE curs;
END