如何使用存储过程返回多行

inb*_*nba 3 mysql stored-procedures

我是存储过程的新手。我写了一个查询来获取多行。但我收到了类似的错误

错误代码:1172。结果包含多于一行。

我应该使用 CURSOR 类型吗?

这里是我的查询和表结构。

我的表结构是:

+---+------+------+---------+
|id | name | class| section |
+---+------+------+---------+
|1  |abc   |5     | A       |
|2  |cdef  |5     | B       |
|3  |hikl  |5     | A       |
|4  |xyz   |5     | A       |
+---+------+------+---------+
Run Code Online (Sandbox Code Playgroud)

我的存储过程查询是

CREATE DEFINER=`root`@`localhost` PROCEDURE `mulitiOut`(out namee VARCHAR(50))
BEGIN
select name into @namee from mytable where section = A;
END
Run Code Online (Sandbox Code Playgroud)

如何返回与 A 部分相关的所有名称。

vhu*_*vhu 5

您可以直接从过程返回结果集:

CREATE DEFINER=`root`@`localhost` PROCEDURE `mulitiOut`()
BEGIN
 SELECT name FROM mytable WHERE section = A;
END
Run Code Online (Sandbox Code Playgroud)