Я хочу создать курсор, который подсчитывает, сколько строк в таблице (объявлено с именем: tickets
), и результат должен быть вставлен в новую таблицу (объявленную с именем: sqi_1
).
Обе таблицы уже созданы вне процедуры.
Таблица «sqi_1» имеет 3 столбца: «ID» (автоинкремент), «Дата» (sysdate) и «num» (в которых должно храниться значение счетчика).
Однако моя процедура возвращает 0 затронутых строк.
Процедура должна вернуть 1 затронутую строку, потому что основной выбор (объявленный перед курсором) возвращает 1 строку, которая должна быть вставлена в таблицу sqi_1.
Кроме того, предложение select concat
не возвращается.
DELIMITER //
create procedure test25()
/*SQI 1 numerador*/
begin
-- Variables locales
Declare sqi1_num int;
Declare no_hay_mas_registros int default 0;
-- declaramos cursor
Declare cursor1 cursor for
select count(*) from tickets t
where t.issueType= 'Incident';
declare continue handler for not found set no_hay_mas_registros = 1;
-- se abre el cursor
open cursor1;
-- se van tomando los datos hasta que lleguen al final
loop1:loop
fetch cursor1 into sqi1_num;
if (no_hay_mas_registros=1) then
Select concat ('el resultado es' , sqi1_num);
leave loop1;
end if;
-- se cargan los datos en la tabla sqi_1
INSERT INTO sqi_1 (Date, numerador) values (sysdate, sqi1_num);
end loop loop1;
close cursor1;
End//
DELIMITER ;