2013-02-22 53 views
0

以下存儲的函數正在返回: '#1172 - 結果包含多行'循環返回的存儲函數由多行組成?

我在做什麼錯?

這是一個存儲函數,沒有參數,並期望int返回。

BEGIN 
    DECLARE l_user_id INT; 

    sloop:LOOP 
     SELECT `user_id` INTO `l_user_id` FROM `users` WHERE `area_id` = 1; 

    INSERT INTO `user_function_hours` SET `function_hour_id` = 1, `user_id` = l_user_id; 
    INSERT INTO `user_function_hours` SET `function_hour_id` = 2, `user_id` = l_user_id; 
    INSERT INTO `user_function_hours` SET `function_hour_id` = 3, `user_id` = l_user_id; 
    INSERT INTO `user_function_hours` SET `function_hour_id` = 4, `user_id` = l_user_id; 
    INSERT INTO `user_function_hours` SET `function_hour_id` = 5, `user_id` = l_user_id; 
    END LOOP sloop; 

    RETURN 1; 
END 

回答

0

是的,我們會在觸發器中遇到這種錯誤。

請檢查此查詢。它提供了超過1條記錄。

SELECT `user_id` INTO `l_user_id` FROM `users` WHERE `area_id` = 1; 

請把這個查詢作爲,

SELECT `user_id` INTO `l_user_id` FROM `users` WHERE `area_id` = 1 LIMIT 1; 

這樣,就可以解決這個錯誤。

+0

啊,我明白我做錯了什麼。我想遍歷結果。但我現在只是循環。謝謝你的眼睛。 – pascalvgemert 2013-02-22 16:14:11

+0

歡迎。我無法得到你。 – user2003356 2013-02-22 16:15:48

+0

需要使用光標而不是select into。 – pascalvgemert 2013-02-22 20:14:27