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 Server Cloud Infomaniak.
Premessa
- Durante la creazione di 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 sola definizione di funzione o procedura.
Comprendere il Delimitatore
Un delimitatore è un carattere o una sequenza di caratteri utilizzati per separare le 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 si crea una funzione, una procedura o un trigger, spesso è necessario utilizzare più istruzioni SQL all'interno del blocco BEGIN...END. Essendo il punto e virgola (;) utilizzato anche per terminare queste istruzioni interne, MySQL potrebbe interpretare il primo punto e virgola come la fine della definizione della funzione, causando un errore di sintassi. Per aggirare questo problema, è necessario cambiare il delimitatore durante la definizione della funzione.
Creare una funzione semplice utilizzando delimitatori personalizzati
Prima di definire la funzione, è necessario indicare a MySQL che si utilizzerà un altro delimitatore. Nell'esempio seguente, $$ viene utilizzato come nuovo delimitatore:
DELIMITER $$Con il nuovo delimitatore in atto, è possibile definire ora la funzione. Il CREATE FUNCTION include il corpo della funzione, dove è possibile utilizzare istruzioni SQL interne separate da punti e virgole 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 stringa di caratteriHello World.
Dopo aver definito la funzione, reimpostare il delimitatore sul valore predefinito (il punto e virgola). Questo consente di continuare ad eseguire le istruzioni SQL abituali nei tuoi script successivi:
DELIMITER ;