gpt4 book ai didi

mysql - 如何从 MySQL 中的存储过程中检索多行?

转载 作者:可可西里 更新时间:2023-11-01 06:54:46 26 4
gpt4 key购买 nike

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

MySQL查询

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;

错误信息

MySQL said: Documentation
#1172 - Result consisted of more than one row

注意

Sample1 - procedure name
emp - selected field from table personnel
lft - use to check the condition, it is also one of the field of table personnel
personnel - table name

最佳答案

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

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


如何从 mysql 中的存储过程中检索多行数据?

  • 方案A:填另一张表,可能是临时表。
  • B 计划:只需执行过程中没有 INTO 子句的 SELECT 语句;然后你可以从应用程序中读取数据集(c#,PHP+mysqli,...)
  • C方案:不使用过程,只执行SELECT查询。

关于mysql - 如何从 MySQL 中的存储过程中检索多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com