Le Label
Sintassi
label: <construtto> [label]
Le label (etichette) sono identificatori di MariaDB/MySQL che identificano un costrutto BEGIN ... END. Hanno una lunghezza massima di 16 caratteri e possono essere virgolettate con i backtick (`
).
Le etichette hanno una parte iniziale e una finale. Quella iniziale deve precedere la porzione di codice a cui si riferisce, deve essere seguita dai due punti (:
) e può trovarsi sia sulla stessa riga sia su una diversa. La parte finale è opzionale e non aggiunge nulla, ma può rendere il codice più leggibile. Se presente, deve precedere il delimitatore del costrutto (;
). I costrutti identificati da un'etichetta possono essere annidati. Ogni costrutto può essere associato ad una sola etichetta.
Le istruzioni LEAVE e ITERATE possono essere utilizzate rispettivamente per uscire da una porzione di codice identificata da un'etichetta, o ripetere la sua esecuzione. LEAVE e ITERATE devono trovarsi nella stessa Stored Routine, Trigger o Evento che contiene l'etichetta.
Esempi
Una semplice etichetta usata per uscire da un LOOP:
CREATE PROCEDURE `test_sp`() BEGIN `my_label`: LOOP SELECT 'looping'; LEAVE `my_label`; END LOOP; SELECT 'out of loop'; END;
La seguente etichetta è usata per uscire dalla procedura, e ha una parte finale:
CREATE PROCEDURE `test_sp`() `my_label`: BEGIN IF @var = 1 THEN LEAVE `my_label`; END IF; DO something(); END `my_label`;