sql >> Databáze >  >> RDS >> Mysql

Kurzorová smyčka MYSQL, spustí jedno kolo navíc, proč?

Obslužná rutina, která nastavuje not_found_creadit = 1 , se spustí při FETCH nevrací žádné řádky, ale kontrolujete jeho hodnotu před spuštění FETCH , takže hlavní tělo vaší smyčky se při FETCH provede ještě jednou selže, smyčka smyčky se ukončí na začátku dalšího iterace.

Přeuspořádejte kód tak, aby okamžitě po zkontroloval hodnotu proměnné 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;


Zvažte také opravu pravopisu vaší proměnné na not_found_credit



  1. Jak opravit chybu Microsoft SQL Server 926?- Vyřešeno

  2. Co je sdílení databáze?

  3. Odstraňte nebo ořízněte prvních nebo posledních několik znaků v databázi MySQL pomocí SQL

  4. Napište optimalizace pro Qualcomm Centriq 2400 v MariaDB 10.3.5 Release Candidate