首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MySQL中从存储过程中检索多行?

如何在MySQL中从存储过程中检索多行?
EN

Stack Overflow用户
提问于 2011-11-29 08:45:07
回答 3查看 61.2K关注 0票数 8

我试图通过存储过程提取一个字段,我使用了以下查询。我的目标是取出多个行,但只有在存在单个行时,它才能成功地执行结果。否则,它将返回一个错误,正如我在下面提到的。

MySQL查询

代码语言:javascript
运行
复制
DELIMITER ;;
DROP PROCEDURE IF EXISTS Sample1;;

CREATE PROCEDURE Sample1(IN lft1 INT, IN rgt1 INT, OUT emp1 VARCHAR(20))
BEGIN
    SELECT p.emp INTO emp1
    FROM personnel p
    WHERE p.lft > lft1
          AND p.rgt < rgt1
    LIMIT 10;
END;;

CALL Sample1(1, 10, @emp);;
SELECT @emp;

错误消息

代码语言:javascript
运行
复制
MySQL said: Documentation
#1172 - Result consisted of more than one row 

备注

Sample1 -过程名称 emp -从表人员中选择字段 lft -用于检查状态,也是表人员领域之一。 personnel -表名

EN

Stack Overflow用户

回答已采纳

发布于 2011-11-29 08:58:37

该错误不在您的过程中。错误在查询中--它返回多行,但不能将多个结果设置为标量值“emp1 1”。

您应该限制查询,使其返回一行。

如何从mysql中的存储过程中提取多行?

  • 计划A:填充另一个表,它可能是一个临时表。
  • 计划B:只需执行SELECT语句,而不使用INTO子句;然后可以从应用程序读取数据集(c#,PHP+mysqli,.)
  • 计划C:不要使用该过程,只需执行SELECT查询。
票数 11
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8307939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档