복붙노트

[SQL] "- 제로 행이 페치 선택 또는 처리 된 데이터 없음 오류 1329"어떻게이 제거되지하세요

SQL

"- 제로 행이 페치 선택 또는 처리 된 데이터 없음 오류 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

해결법

  1. ==============================

    1.나는 당신이 당신의 게시물에 다음 줄을 포함하는 것을 잊었다 생각 :

    나는 당신이 당신의 게시물에 다음 줄을 포함하는 것을 잊었다 생각 :

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    

    코드는 정확하지만 MySQL은의 버그 / 이상한 행동은 경고가 처리 된 경우에도 표시됩니다. 당신은 당신의 순서의 마지막에 그 invovles 테이블을 "더미"문을 추가하고 성공하면,이 경고를 취소 할 것을 피할 수 있습니다. (http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html 참조) 귀하의 경우 :

    SELECT name INTO l_name FROM customer_tbl LIMIT 1;
    

    루프의 종료 후. MySQL은 5.5.13에 경고는 리눅스와 윈도우에서 사라집니다. 나는 MySQL의 버그 60840에 댓글을 그리고 나는 그들이 그것을 미래의 어떤 시간을 수정 바랍니다 ...

  2. ==============================

    2.당신은 같은 핸들러 계속 정의해야합니다 :

    당신은 같은 핸들러 계속 정의해야합니다 :

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    

    그것과 같을 것이다 그래서 :

    DECLARE done INT DEFAULT 0;
    DECLARE l_name VARCHAR(20);
    DECLARE my_cur CURSOR FOR
        SELECT name FROM customer_tbl;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
    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;
    
  3. ==============================

    3.나는이 우연히 내가 공식 MySQL의 문서에이 가로 질러까지 내 머리에서 철수

    나는이 우연히 내가 공식 MySQL의 문서에이 가로 질러까지 내 머리에서 철수

    자세한 내용은 아래의 링크 및 스크롤을 클릭하지만 수정은이 핸들러를 계속 성공적인 선택 INSIDE을 포함했다 :

    DECLARE CONTINUE HANDLER FOR NOT FOUND
    BEGIN
       SELECT 1 INTO @handler_invoked FROM (SELECT 1) AS t;
    END;
    
  4. ==============================

    4.나는이 핸들러가 나를 위해 일을 계속 포함하여 여기에 솔루션과 없음을 시도했다. 난 아직도 MySQL의 오류 로그에 메시지를 얻을. 나는 내 "선택 ...로 ..."감각을 만든있는이 발견,하지만 난 정말이 핸들러가 커서를 위해 일하는 것이 계속 생각했다. 어느 쪽이든 나는 어떤 행이 완벽하게 작동 반환 된 여부를 확인하기 위해 "() FOUND_ROWS"을 사용하여 발견했다. 간단한 명령문 "로 선택"고이 평균 커서로 변환 할 필요가 있지만, 많은 일을하지 않고 문제를 해결 않습니다.

    나는이 핸들러가 나를 위해 일을 계속 포함하여 여기에 솔루션과 없음을 시도했다. 난 아직도 MySQL의 오류 로그에 메시지를 얻을. 나는 내 "선택 ...로 ..."감각을 만든있는이 발견,하지만 난 정말이 핸들러가 커서를 위해 일하는 것이 계속 생각했다. 어느 쪽이든 나는 어떤 행이 완벽하게 작동 반환 된 여부를 확인하기 위해 "() FOUND_ROWS"을 사용하여 발견했다. 간단한 명령문 "로 선택"고이 평균 커서로 변환 할 필요가 있지만, 많은 일을하지 않고 문제를 해결 않습니다.

    DECLARE v_rowcount      integer unsigned;
    DECLARE cur_entries cursor for
            select app_name, proc_name, error_code, sum(occurrences) occurrences
            from that_table...; 
    open cur_entries; 
    set v_rowcount = found_rows();
    if v_rowcount > 0 then
      fetch cur_entries into v_app_name, v_proc_name, v_error_code, v_occurrences;
      ...
    end if;
    close cur_entries;
    

    나는 여기에 내 개인 블로그에이 최대를 썼다 : http://tinky2jed.wordpress.com/technical-stuff/mysql/mysql-no-data-zero-rows-fetched-how-to-code-for-it/

  5. ==============================

    5.나는이 수정되는 경우 커서 문제를 모르겠지만, 저장 기능이 경고로 실행하고 사용할 경우 발견 :

    나는이 수정되는 경우 커서 문제를 모르겠지만, 저장 기능이 경고로 실행하고 사용할 경우 발견 :

    RETURN (SELECT x From myTable...);
    

    대신에

    SELECT x into myVar...return myVar
    

    나는이 도움이 문서에서이있어 : http://bugs.mysql.com/bug.php?id=42834

  6. ==============================

    6.일반적으로 이것은 당신이 커서 범위를 오버 슈트 때, 그래서 문이 페치 루프 조건을 체크 아웃 발생

    일반적으로 이것은 당신이 커서 범위를 오버 슈트 때, 그래서 문이 페치 루프 조건을 체크 아웃 발생

  7. ==============================

    7.그래서 난 내 코드에서 같은 오류가되었고, 나는, 루프는 무한을 거라고 따라서 (루프 동안 사용) 내 루프 변수를 증가하지 않은 것을 깨달았다.

    그래서 난 내 코드에서 같은 오류가되었고, 나는, 루프는 무한을 거라고 따라서 (루프 동안 사용) 내 루프 변수를 증가하지 않은 것을 깨달았다.

    너무 당신의 코드에서 1 개 어디서나 "완료"설정이되지 않습니다, 나는 코드가 그것 때문에 오류를 보여주고있다 생각합니다.

    이게 도움이 되길 바란다!

  8. from https://stackoverflow.com/questions/3463283/how-to-get-rid-of-error-1329-no-data-zero-rows-fetched-selected-or-process by cc-by-sa and MIT license