微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何从MySQL中的存储过程中检索多行?

错误不在您的过程中。错误出现在您的查询中-返回的行多于一行,但是您无法将多个结果设置为标量值’emp1’。

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

如何从MysqL中的存储过程检索多行?

:填写另一个表,它可能是一个临时表。:只需执行过程中没有INTO子句的SELECT语句即可;那么您可以从应用程序中读取数据集(C#,PHP + MysqLi等):不要使用该过程,只需执行SELECT查询即可。

解决方法

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

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 personnell 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 personnell
lft -----use to check the condition,it is also one of the field of table personnell
personnell------table name

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。