Сохраненная функция с возвратом цикла состояла из более чем одной строки?

Возвращается следующая хранимая функция: "#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

person pascalvgemert    schedule 22.02.2013    source источник


Ответы (1)


Да, мы столкнемся с такого рода ошибками в триггерах.

Пожалуйста, проверьте этот запрос. В результате получается более 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;

Так что, вы можете решить эту ошибку.

person user2003356    schedule 22.02.2013
comment
А, я вижу, что я делаю неправильно. Я хотел повторить результат. Но сейчас я просто зацикливаюсь. спасибо за открытие глаз. - person pascalvgemert; 22.02.2013
comment
Необходимо использовать курсор вместо выбора в. - person pascalvgemert; 23.02.2013