2013-02-22 3 views
0

다음 저장된 함수가 반환 중입니다. '# 1172 - 결과가 둘 이상의 행으로 구성되었습니다.'루프 반환이 두 개 이상의 행으로 구성된 저장 함수?

내가 뭘 잘못하고 있니?

params가없는 Stored 함수이며 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

예, 트리거에서 이러한 종류의 오류가 발생합니다.

이 검색어를 확인하십시오. 결과로 두 개 이상의 레코드를 제공합니다.

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

+0

환영합니다. 나는 너를 못 잡아. – user2003356

+0

select into 대신 커서를 사용해야합니다. – pascalvgemert