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
4

1 回答 1

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;

这样,您就可以解决此错误。

于 2013-02-22T15:55:15.757 回答