sql >> データベース >  >> RDS >> Mysql

MYSQLカーソルループ、1ラウンド余分に実行します、なぜですか?

    not_found_creadit = 1を設定するハンドラー 、FETCHのときに発生します 行を返しませんが、 beforeの値をチェックしています FETCHの実行 、したがって、FETCHの場合、ループの本体は1回余分に実行されます。 失敗すると、ループループは nextの開始時に終了します 反復。

    コードを再配置して、直後の変数の値を確認します。 FETCH

    credit_loop : LOOP 
        FETCH cur_credit INTO vc_customer, dec_amount, vc_status, vc_user_type, vc_emp, vc_note;
        IF not_found_creadit THEN
            CLOSE cur_credit;
            LEAVE credit_loop;
        END IF;
        SELECT vc_customer, dec_amount, vc_status, vc_user_type, vc_emp, vc_note;
        ......
        ......
    END LOOP;
    


    また、変数のスペルをnot_found_creditに修正することを検討してください。



    1. 内部whileループが機能しない

    2. PHPで投稿と取得を同時に行う

    3. Postgresql:MacOSXを使用してpg_hba.confファイルを見つける方法

    4. オンラインホテル予約で競合状態を防ぐ方法