「エラー 1329: データなし - 取得、選択、または処理された行が 0 行です」というエラーを解消する方法 質問する

「エラー 1329: データなし - 取得、選択、または処理された行が 0 行です」というエラーを解消する方法 質問する

値を返す必要のないストアド プロシージャがあります。問題なくスムーズに実行されます。ただし、実行終了後にエラー メッセージが出力されます。

エラー: データがありません - 取得、選択、または処理された行は 0 行です

このエラーメッセージを消すにはどうしたらいいでしょうか?

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

おそらく、投稿に次の行を含めるのを忘れただけだと思います。

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

コードは正しいですが、mysql のバグや異常な動作により、処理されていても警告が表示されます。テーブルを伴い成功するプロシージャの最後に「ダミー」ステートメントを追加すれば、これを回避できます。これにより警告がクリアされます。(参照:警告の表示) あなたの場合:

SELECT name INTO l_name FROM customer_tbl LIMIT 1;

ループ終了後。MySQL 5.5.13 では、Linux および Windows で警告が表示されなくなります。MySQL Bug 60840 にコメントしましたが、将来的には修正されることを期待しています...

おすすめ記事