首页 > 解决方案 > 带有简单游标的简单存储过程不会编译

问题描述

我已经研究了几个小时如何在存储过程中创建一个简单的 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

任何想法我做错了什么?

标签: mysqldatabase-cursor

解决方案


推荐阅读