mysql - 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
--------
我一直在 StackOverflow 上寻找类似的问题,但其中大多数解决了多个查询的问题,这不是我的情况。
据我所知,MySQL 文档指出程序应该能够返回表。
对于示例,我展示了 phpmyadmin 使用的默认选项,但我尝试调整它们无济于事。
我错过了什么?
解决方案
程序没有错。
phpMyAdmin 在 SQL 选项卡中使用 CALL 执行时不处理存储过程。
您可以通过单击左侧导航树中过程名称前面的图标来运行该过程。
推荐阅读
- elasticsearch - 负载在 cpu 核心之间分布不均 - Elasticsearch
- api - 如何轻松记录 REST API
- python - 使用 Python 的子进程将 Wav 转换为 Wav
- plotly - 向用户发出丢失数据的信号
- javascript - 需要将 curl 命令解析为 Javascript 对象
- sql - SQL 方法填充唯一标识符的空白行
- python - Pyinstaller PyQt5 ModuleNotFoundError 第二个窗口不会打开
- javascript - 我尝试在结帐页面显示表格的方式有问题吗?
- python - 如果我有主键,Django 将 id 字段添加到模型
- r - RSelenium - 从多个 URL 中抓取