У меня есть 2 таблицы api (столбцы - api, api_context, api_id -> первичный ключ) и api_request_summary (столбцы - api_context).Мне нужно вставить количество раз, которое api_context, относящийся к конкретному api_id, повторяется в таблице curhittest1.То есть мне нужно получить количество повторений значения в столбце api_context и вставить его с помощью api_id.Обе таблицы имеют несколько строк, поэтому я использовал курсоры для циклического перемещения по таблицам.я могу правильно вставить значения в таблицу, но мне нужно проверить, существует ли уже этот api_id в таблице curhittest1, и если да, обновить и если нет вставки.
DELIMITER //
CREATE PROCEDURE curhit12()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE apiId, noOfHits int(11);
Declare apiContext varchar(255);
DECLARE cur1 CURSOR FOR Select api_id from api;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO apiId;
IF done THEN
LEAVE read_loop;
END IF;
select api_context into apiContext from api where api_id =apiId;
SELECT COUNT(*) FROM api_request_summary WHERE api_context=apiContext into noOfHits;
IF exists (SELECT * FROM curhittest1 WHERE apiid = apiId) THEN
UPDATE curhittest1
SET noofhits=noOfHits
WHERE apiid = apiId;
ELSE
insert into curhittest1(apiid,noofhits) values (apiId,noOfHits);
END IF;
END LOOP;
CLOSE cur1;
END//
DELIMITER
Когда я использую следующий код только 1 строкадобавлен в таблицу curhittest1.Когда точно такой же код используется в процедурах sql без курсоров, он отображается, поэтому я предполагаю, что мне нужно сделать что-то по-другому при использовании с курсорами.Как я могу точно добавить все значения в таблицу?