2013-02-21 66 views
0

您好我无法弄清楚我的存储函数出了什么问题。MySQL编写的函数 - 在varchar和返回varchar - 错误:1172

select batch as bach from test where mfg_code = 'BC-7A1-5' group by batch; 

当我运行上面的脚本,我能够得到预期的行数。

但是我不能与下面的类似的脚本: -

DELIMITER $$ 
DROP FUNCTION IF EXISTS `testdata1970_05`.`listbatch` $$ 
CREATE FUNCTION `listbatch`(mfgnum VARCHAR(24)) RETURNS VARCHAR(10) 

BEGIN 
DECLARE bach VARCHAR(10); 
SELECT batch into bach FROM test WHERE mfg_code = mfgnum group by batch; 
RETURN bach; 
END $$ 

DELIMITER ; 

并返回错误“ERROR 1172(42000):结果包括了多行”,这里是低于

我的查询
select listbatch("BC-7A1-5"); 

请指教。 感谢 克莱门特

+0

你了解错误信息吗?你不能将多个字符串存储到一个变量中。 – 2013-02-21 08:29:56

+0

哦..我没有想到它!谢谢 – user1739825 2013-02-22 00:51:31

回答

1

你的错误信息告诉你,多行是由您的查询返回,结果集不能被存储在一个简单的变量,因为你定义的变量只能容纳一个值!

+0

难怪......我没有想到那么难! – user1739825 2013-02-22 00:52:18