#mysql #database-cursor
#mysql #база данных-курсор
Вопрос:
Я часами изучал, как создать простой курсор 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
Есть идеи, что я делаю не так?
Комментарии:
1.
;
В концеDROP ...
должно быть//
2. Ник: Я внес это изменение, и я все еще получаю ошибку.
3. Итак, вы получаете ошибку при вводе кода или при вызове процедуры?
4. При попытке создания возникает ошибка — недостаточно далеко для ее запуска. Что происходит, когда вы копируете / вставляете мою процедуру в свой Workbench и пытаетесь ее создать?
5. Есть несколько опечаток — их не должно быть
AS
в вашихDECLARE
инструкциях, и вам не хватает;
в концеDECLARE cursor1
инструкции