"오류 1329: 데이터를 가져오거나 선택하거나 처리하지 않음"을 제거하는 방법
값을 반환하지 않는 저장 프로시저를 실행할 때, 사용자에게 "오류 1329: 데이터 없음 - 가져오거나 선택하거나 처리한 행이 없습니다."가 발생할 수 있습니다. 이 문제를 해결하려면 다음 단계를 따르세요.
다음 저장 프로시저를 고려하세요.
CREATE PROCEDURE `testing_proc`() READS SQL DATA BEGIN DECLARE done INT DEFAULT 0; DECLARE l_name VARCHAR(20); DECLARE my_cur CURSOR FOR SELECT name FROM customer_tbl; OPEN my_cur; my_cur_loop: LOOP FETCH my_cur INTO l_name; IF done = 1 THEN LEAVE my_cur_loop; END IF; INSERT INTO names_tbl VALUES(l_name); END LOOP my_cur_loop; CLOSE my_cur; END
이 오류는 처리된 후에도 경고를 표시하는 MySQL의 동작에서 발생합니다. 이를 방지하려면 프로시저 끝에 다음 줄을 포함하십시오.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
또는 테이블과 관련된 "더미" 문을 추가하세요. 루프 후에 성공적으로 실행됩니다. 예:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
이렇게 하면 MySQL의 버그/이상한 동작으로 인한 경고가 지워집니다(http: //dev.mysql.com/doc/refman/5.5/en/show-warnings.html).
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3