MYSQL 错误#2014 : in stored procedure when resultset is empty

标签 mysql stored-procedures phpmyadmin

我正在尝试使用 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
--------
  • 我一直在 StackOverflow 上寻找类似的问题,但大多数都解决了多个查询的问题,但我的情况并非如此。

  • 据我所知,MySQL 文档指出过程应该能够返回表。

  • 在这个例子中,我展示了 phpmyadmin 使用的默认选项,但我尝试调整它们但无济于事。

我错过了什么?

最佳答案

程序没有问题。

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

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

关于MYSQL 错误#2014 : in stored procedure when resultset is empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52537783/

相关文章:

mysql - 错误代码 : 1054. 存储过程中 'abcdef' 中的未知列 'field list'

python - Mysqldump 与 python

php - 使用 BETWEEN 命令进行半天签到

java - Java Web 框架(Ninja 和 Spark 框架)出现 MySQL unicode 错误

sql - 如何在 SQL Server 2008 中的链接 Firebird 服务器上执行存储过程

sql - 在存储过程中如何运行查询并有条件地做某事

sql - 如何在MAC OSX中拆分SQL?

php - 在表格中显示 PHP 中 SQL 查询的结果

mysql过程语法错误

php - 简单的登录表单 php 需要帮助