当前位置: 首页 > 面试题库 >

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

仲孙超
2023-03-14
问题内容

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

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查询即可。



 类似资料:
  • 问题内容: 我已经看到了这个问题问的时候负荷,但他们都真的很长了,我自己在做什么......所以,就不能回避我的头,可能有人告诉我怎么走,从这个使用PDO将过程转换为php: 程序: 我尝试过的PHP代码: 但是,对于一个比我脑细胞更多的人来说,这可能不明显。任何帮助表示赞赏。 关于为什么我相信这应该起作用的参考: http://www.php.net/pdo.prepared-statement

  • 问题内容: 我有一个非常简单的问题,但是我没有使用Mysql从SP退出任何简单的代码。谁能和我分享该怎么做? 问题答案:

  • 问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。

  • 问题内容: 我已经在MySQL中创建了存储过程,并希望PHP调用该存储过程。做这个的最好方式是什么? -MySQL客户端版本: 4.1.11 -MySQL服务器版本:5.0.45 这是我的存储过程: 调用过程getTreeNodeName的PHP代码是什么? 问题答案: 我现在通过使用代替找到了解决方案。 我发现许多人似乎在使用时遇到了问题。

  • 问题内容: 我有这个存储过程。例如,如何间隔5秒运行一次?像删除时间戳超过一天的数据的例程一样? 问题答案: 您可以使用mysql Scheduler每5秒运行一次。您可以在以下网址找到示例:http://dev.mysql.com/doc/refman/5.1/en/create- event.html 从未使用过它,但我希望它能起作用: