2013-02-21 89 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