mysql - 警告 1329 未获取数据

标签 mysql stored-procedures

delimiter ;;

create procedure cd3(out var int)
begin
   declare finished int default 0;
   declare cur cursor for select id from a;
   declare continue handler for not found set finished=1;
   open cur;
   curloop:loop
      fetch cur into var;
      if finished then
         leave curloop;
      end if;
   end loop curloop;
   close cur;
end;;

call cd3(@var);

最佳答案

这是 MySQL 提供的警告。它们可能有点令人困惑,我建议您仔细阅读:请参阅 http://dev.mysql.com/doc/refman/5./en/show-warnings.html

我会改用这种方法

declare v_var VARCHAR(200); <-- if that whats it expected to be
open cur;

-- create a loop

repeat_cur: LOOP
FETCH cur INTO var;
-- checks if it is done
if finished then
    LEAVE repeat_cur;
end if;

// DO THE WORK

END LOOP;
close cur;

我不确定,因为 var 是预期的输出参数。您可以将 var 声明为变量并使用它,否则只需跳过我编写的声明行。

查看此页面:How to get rid of "Error 1329: No data - zero rows fetched, selected, or processed" ,他也遇到了同样的问题,通过在var中添加一个简单的select语句解决了。

如果上述不起作用,请尝试在循环结束之前添加此内容。

SELECT 'var' INTO var;

关于mysql - 警告 1329 未获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20070063/

相关文章:

mysql - 用于在两个表中插入数据的存储过程

php - 函数内部的全局数据库连接

java - 如何忽略 Flyway 的占位符表达式?

php - 使用 PHP 将 MySQL 查询输出为 SQLite

Mysql:从过程结果中列出值

sql - Oracle 错误 PLS-00323 : subprogram or cursor is declared in a package specification and must be defined in the package body

mysql - 删除mySQL表中 "0"的条目

php - MySQL 选择不在另一个表中的 ID

stored-procedures - SSRS : Passing different parameter values to stored procedure for two Data Sets

MySQL:在程序中使用 "IF NOT IN"