Простая хранимая процедура с простым курсором не будет компилироваться

#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 инструкции