加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-11 23:52:07 所属栏目:MySql教程 来源:网络整理
导读:我试图通过存储过程取出一个字段,我使用了以下查询.我的目标是获取多行,但只有当存在一行时才能成功执行结果.否则它会返回错误,如下所述. MYSQL查询 delimiter ;; drop procedure if exists Sample1;; CREATE PROCEDURE Sample1(IN lft1 INT,IN rgt1 INT,OUT

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

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
最佳答案 错误不在您的程序中.错误在您的查询中 – 它返回多行,但您不能将多个结果设置为标量值’emp1′.

您应该限制查询以便返回一行.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读