mysql - 在游标循环内调用存储过程,而不触发继续处理程序

标签 mysql stored-procedures cursor handler

我试图在游标循环内调用 MySQL 中的存储过程。在循环中执行 INSERT 时,游标表现正常;但如果我尝试调用存储过程,则 continue 处理程序“设置完成 = 1”,并将在处理第一个记录后提前退出循环。关于如何解决这个问题有什么想法吗?谢谢。

declare test_cursor cursor for 
       select projectid, projectdesc
         from tblProjects
        order by projectdesc;          

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

set done = 0;  
open test_cursor;

repeat

  fetch test_cursor into wprojectid, wprojectdesc;

  if not done then  

    insert into tblTest (a, b) values (wprojectid, wprojectdesc);   <--this would work
    call spTest(wprojectid, wprojectdesc, @retrn);                                    <--this trips the Handler after first loop

  end if;      

until done end repeat;

close test_cursor; 

最佳答案

我不确定,但尝试看看这段代码是否有效?

declare test_cursor cursor for 
       select projectid, projectdesc
         from tblProjects
        order by projectdesc;          

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
DECLARE done_holder INT;


set done = 0;
open test_cursor;

repeat

  fetch trade_cursor into wprojectid, wprojectdesc;

  if not done then  

    set done_holder = done;
    insert into tblTest (a, b) values wprojectid, wprojectdesc;
    call spTest(a, b, @retrn);
    set done = done_holder;

  end if;      

until done end repeat;

close test_cursor; 

关于mysql - 在游标循环内调用存储过程,而不触发继续处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623588/

相关文章:

android - 将光标传递给 Activity ?

mysql - 用游标触发审计

sql - 游标获取语句重复调用第一行

php - 使用 PHP 和数组进行 PDO 更新

MySQL 左连接计数事件并返回 null

MYSQL存储过程从日期创建动态表

c# - 使用 Entity Framework 调用存储过程并从 WCF 安全返回的更好方法?

mysql - 使用 ORDER BY 和 LIMIT 时查询速度慢

mysql - 删除 sql : you can't specify target table 'table' for update in FROM clause 中的重复项

SQL 存储过程