Запрос курсора и запрос select value
возвращают строки, если я запускаю его в mysql
, но когда в курсоре он всегда выходит из l oop.
Что-то здесь не так?
Я добавил «ДО L OOP», «EXIT» и «IN L OOP», чтобы он печатал там, где он есть, но всегда начинается с BEFORE LOOP
, а затем заканчивается EXIT
.
CREATE PROCEDURE getTotal()
BEGIN
DECLARE HOSTID INT;
DECLARE cITEMID INT;
DECLARE Total INT;
declare finished INT default false;
declare cur1 cursor for SELECT itemid FROM items WHERE hostid = 10579;
declare continue handler for not found set finished = true;
open cur1;
loop_1: loop
fetch cur1 into cITEMID;
SELECT "BEFORE LOOP";
if finished then
SELECT "EXIT";
leave loop_1;
end if;
SELECT "IN LOOP";
-- Test query
SELECT value from history_uint WHERE itemid = cITEMID ORDER BY itemid DESC LIMIT 1;
-- Final select query will look like this.
-- SET @Total := @Total + (SELECT value from history_uint WHERE itemid = cITEMID ORDER BY itemid DESC LIMIT 1);
-- SELECT @Total;
end loop;
close cur1;
END //
DELIMITER ;
Запросы:
SELECT itemid FROM items WHERE hostid = 10579;
| itemid |
| 12345 |
| 12346 |
| 12347 |
SELECT value from history_uint WHERE itemid = 12345 ORDER BY itemid DESC LIMIT 1;
| value |
| 1 |