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

时间:2015-09-09 13:35:22

标签: mysql stored-procedures

我是Stored Procedure的新手。我写了一个查询来获取多行。但我得到的错误就像

  

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

我应该使用CURSOR类型吗?

这是我的查询和表结构。

我的表结构是:

+---+------+------+---------+
|id | name | class| section |
+---+------+------+---------+
|1  |abc   |5     | A       |
|2  |cdef  |5     | B       |
|3  |hikl  |5     | A       |
|4  |xyz   |5     | A       |
+---+------+------+---------+

我的存储过程查询

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

尝试GROUP_CONCAT功能 -

SELECT GROUP_CONCAT(name) INTO @namee FROM mytable WHERE section = A;

作为解决方法 - 创建并填充另一个表 -

INSERT INTO temp_table(name) SELECT name FROM mytable WHERE section = A;