sql >> Databasteknik >  >> RDS >> Mysql

Hur man använder goto-etikett i MySQL-lagrad funktion

Det finns GOTO-fall som inte kan implementeras i MySQL, som att hoppa bakåt i kod (och bra också).

Men för något som ditt exempel där du vill hoppa ur allt till en sista serie av påståenden, kan du skapa ett BEGIN/END-block som omger koden att hoppa ur:

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;

Eftersom din kod bara är några kapslade IF, är konstruktionen onödig i den givna koden. Men det är mer meningsfullt för LOOP/WHILE/REPEAT att undvika flera RETURN-satser inifrån en loop och för att konsolidera slutbehandlingen (lite som TRY / FINALLY).



  1. Hur man får gårdagens datum i PostgreSQL

  2. Är det möjligt att tvinga radnivålåsning i SQL Server?

  3. Vad är det bästa sättet att implementera en delsträngsökning i SQL?

  4. SQL Server-systemdatabaser – grundläggande koncept