1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Creare una funzione MySQL su Server Cloud
Questa guida dettaglia l'uso di DELIMITER
per creare funzioni MySQL su Serveur Cloud Infomaniak.
Premessa
- Quando si creano funzioni o procedure memorizzate in MySQL, è fondamentale comprendere il ruolo dei delimitatori.
- L'uso corretto dei delimitatori è essenziale per evitare errori di sintassi che possono verificarsi a causa della presenza di più istruzioni SQL in una singola definizione di funzione o procedura.
Capire il Delimitatore
Un delimitatore è un carattere o una sequenza di caratteri utilizzati per separare gli istruzioni SQL in uno script. Per impostazione predefinita, MySQL utilizza il punto e virgola (;
) come delimitatore. Tuttavia, quando si creano funzioni, procedure memorizzate o trigger che contengono più istruzioni SQL, è necessario cambiare temporaneamente il delimitatore per evitare errori di sintassi.
Quando crei una funzione, una procedura o un trigger, spesso hai bisogno di utilizzare più istruzioni SQL all'interno del blocco BEGIN...END
. Poiché il punto e virgola (;
) viene utilizzato anche per terminare queste istruzioni interne, MySQL potrebbe interpretare il primo punto e virgola come la fine della definizione della funzione, il che causerebbe un errore di sintassi. Per aggirare questo problema, devi cambiare il delimitatore durante la definizione della funzione.
Creare una funzione semplice utilizzando delimitatori personalizzati
Prima di definire la funzione, devi indicare a MySQL che utilizzerai un altro delimitatore. Nell'esempio seguente, $$
viene utilizzato come nuovo delimitatore:
DELIMITER $$
Con il nuovo delimitatore in atto, è possibile definire la funzione. Il CREATE FUNCTION
include il corpo della funzione, dove è possibile utilizzare istruzioni SQL interne separate da punti e virgola senza problemi:
CREATE FUNCTION hello_world()
RETURNS TEXT
LANGUAGE SQL
BEGIN
RETURN 'Hello World';
END;
$$
In questo esempio:
CREATE FUNCTION hello_world()
: dichiara l'inizio della definizione della funzionehello_world
.RETURNS TEXT
: specifica il tipo di dati che la funzione restituisce.LANGUAGE SQL
: indica che il linguaggio utilizzato per la funzione è SQL.BEGIN ... END
: racchiude il codice della funzione. All'interno, il punto e virgola viene utilizzato per separare le istruzioni SQL.RETURN 'Hello World';
: istruzione SQL che restituisce la stringaHello World
.
Dopo aver definito la funzione, riportare il delimitatore al suo stato predefinito (il punto e virgola). Questo permette di continuare ad eseguire i comandi SQL abituali nei tuoi script successivi:
DELIMITER ;