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