1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Creare una funzione MySQL su Server Cloud
Questa guida illustra l'uso di DELIMITER
per creare funzioni MySQL su Server Cloud Infomaniak.
Preambolo
- 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 le istruzioni SQL in uno script. Per impostazione predefinita, MySQL utilizza il punto e virgola (;
) come delimitatore. Tuttavia, quando si creano funzioni, procedure archiviate o trigger che contengono più istruzioni SQL, è necessario modificare temporaneamente il delimitatore per evitare errori di sintassi.
Quando si crea una funzione, procedura o trigger, è spesso necessario utilizzare più istruzioni SQL all'interno del blocco BEGIN...END
Punto e virgola (;
) essendo utilizzato anche per completare queste istruzioni interne, MySQL potrebbe interpretare il primo punto e virgola come la fine della definizione della funzione, il che comporterebbe un errore di sintassi. Per aggirare questo problema, è necessario modificare il delimitatore durante la definizione della funzione.
Creare una funzione semplice utilizzando delimitatori personalizzati
Prima di impostare la funzione, è necessario indicare a MySQL che si sta per utilizzare un altro delimitatore. Nell'esempio qui sotto, $$
viene utilizzato come nuovo delimitatore:
DELIMITER $$
Con il nuovo delimitatore in posizione, ora puoi impostare la tua funzione. Le 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
Incapsula 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, riportare il delimitatore allo stato predefinito (punto e virgola). Ciò consente di continuare a eseguire le normali istruzioni SQL nei seguenti script:
DELIMITER ;