MYSQL中具有多行抓取的存储过程不工作


stored procedure in MYSQL with multiple row fetching is not working?

我创建了一个名为Sample1的过程

delimiter ;;
drop procedure if exists Sample1;;
CREATE PROCEDURE Sample1(IN lft1 INT,IN rgt1 INT)
BEGIN
declare emp1 VARCHAR(20);
SELECT emp into emp1 FROM personnell WHERE lft>lft1 and rgt < rgt1;
insert into emp_val values (emp1);
END;;
call Sample1(1,12);;

我的表结构如下所示:

---------------------
emp     lft     rgt
---------------------
Albert  1   12
Bert    2   3
Chuck   4   11
Donna   5   6
Eddie   7   8
Fred    9   10 
--------------------

它执行得很好,但是我不能得到结果

如果执行的查询只有一行,则表示它即将到来,并将该值插入到名为emp_val的表中。

但是执行的查询有多行意味着它显示以下错误

Error
SQL query:
call Sample1( 1, 12 )
MySQL said: Documentation
#1172 - Result consisted of more than one row 

我的建议

I have one suggestion to implementing array on it but how to use it i dont know any one help me.. 

如果选择查询可以返回多行,那么就不能使用中间变量来存储查询的结果。但是,您可以使用insert ... select ...查询格式:

INSERT INTO emp_val SELECT emp FROM personnell WHERE lft>lft1 and rgt < rgt1;