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

Jak používat goto label v MySQL uložené funkci

Existují případy GOTO, které nelze implementovat v MySQL, jako je skok zpět v kódu (a také dobrá věc).

Ale pro něco, jako je váš příklad, kdy chcete ze všeho skočit do poslední řady příkazů, můžete vytvořit blok BEGIN/END obklopující kód, ze kterého vyskočíte:

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;

Vzhledem k tomu, že váš kód jsou jen některé vnořené IF, konstrukce je v daném kódu zbytečná. Ale pro LOOP/WHILE/REPEAT dává větší smysl vyhnout se vícenásobným příkazům RETURN zevnitř smyčky a konsolidovat konečné zpracování (trochu jako TRY / FINALLY).



  1. Forward Engineering MySQL Workbench Error 1064

  2. Jak obnovit jednu tabulku ze zálohy .sql postgresql?

  3. Jak použít poddotaz pro možnost dbtable ve zdroji dat jdbc?

  4. Sloupec Postgres neexistuje