ホームページ  >  記事  >  データベース  >  MySQL ストアド プロシージャの「エラー 1329: データがフェッチ、選択、または処理されません」を解決するにはどうすればよいですか?

MySQL ストアド プロシージャの「エラー 1329: データがフェッチ、選択、または処理されません」を解決するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-25 19:11:02160ブラウズ

How to Resolve

「エラー 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 で参照)。

以上がMySQL ストアド プロシージャの「エラー 1329: データがフェッチ、選択、または処理されません」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。