Я часами изучал, как создать простой курсор MySQL внутри хранимого процесса (из Workbench), но, что бы я ни пытался, я всегда получаю эту ошибку:
Команды изсинхронизации;Вы не можете выполнить эту команду сейчас
Вот мой сохраненный процесс:
DELIMITER //
DROP PROCEDURE IF EXISTS ApplyNewFormFieldsToExistingPolicies;
CREATE PROCEDURE ApplyNewFormFieldsToExistingPolicies(argAgencyID int)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE t AS INT; -- TruckerID
DECLARE a AS INT; -- AgentID
DECLARE cursor1 CURSOR FOR SELECT AgentUserID AS AgentID, ID AS TruckerID from Users where IsTrucker = 1 AND AgencyID = argAgencyID
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cursor1;
read_loop: LOOP
FETCH cursor1 INTO t, a;
-- do something with 't'
-- do something with 'a'
END LOOP;
CLOSE cursor1;
END //
DELIMITER ;
Этот sql действителен и возвращает ожидаемые данные:
SELECT AgentUserID AS AgentID, ID AS TruckerID from Users where IsTrucker = 1 AND AgencyID = 1
Есть идеи, что я делаю не так?