sql >> Database teknologi >  >> RDS >> Mysql

Sådan bruger du goto label i MySQL-lagret funktion

Der er GOTO-tilfælde, som ikke kan implementeres i MySQL, som at hoppe baglæns i kode (og en god ting også).

Men for noget som dit eksempel, hvor du vil springe ud af alt til en sidste række af udsagn, kan du oprette en BEGIN/END-blok, der omgiver koden, du skal springe ud af:

aBlock:BEGIN
    if (action = 'D') then
        if (rowcount > 0) then
            DELETE FROM datatable WHERE id = 2;      
        else
           SET p=CONCAT('Can not delete',@b);
           LEAVE aBlock;
        end if;
    end if;
END aBlock;
return 0;

Da din kode kun er nogle indlejrede IF'er, er konstruktionen unødvendig i den givne kode. Men det giver mere mening for LOOP/WHILE/REPEAT at undgå flere RETURN-sætninger inde fra en loop og konsolidere den endelige behandling (lidt ligesom TRY / FINALLY).



  1. Hvordan ejendomsforvaltere kan forbedre effektiviteten med en database

  2. ORA-24550:signal modtaget:[si_signo=6] fejl

  3. Ydeevne overraskelser og antagelser:STRING_SPLIT()

  4. Laravel 5 database problem