首页 > 解决方案 > MYSQL 错误 #2014:结果集为空时在存储过程中

问题描述

我正在尝试使用 phpmyadmin(v4.7.9) 在 MYSQL(v5.7.21) 中创建一个存储过程,该过程有时会返回一个空结果集。

CREATE DEFINER=`my_database`@`%` PROCEDURE `emptytest`(IN `_id` INT(11))
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
    select * from my_table where id=_id

接下来调用它:

call emptytest(1);

当 id 存在于表中时,这可以正常工作:

id  name
--------
1   bob

但是当没有要返回的行时会引发错误:

call emptytest(11);
#2014 - Commands out of sync; you can't run this command now

但是我希望它返回与运行 SQL 语句相同的结果:

select * from my_table where id=11

这是一个空列表:

id  name
--------

我错过了什么?

标签: mysqlstored-proceduresphpmyadmin

解决方案


程序没有错。

phpMyAdmin 在 SQL 选项卡中使用 CALL 执行时不处理存储过程。

您可以通过单击左侧导航树中过程名称前面的图标来运行该过程。


推荐阅读