我是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部分相关的所有名称。
答案 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;