CREATE FUNCTION (UDF)
Sintassi
CREATE [OR REPLACE] [AGGREGATE] FUNCTION [IF NOT EXISTS] nome_funzione RETURNS {STRING|INTEGER|REAL|DECIMAL} SONAME nome_shared_library
Spiegazione
Le user-defined function (UDF) sono modi per estendere MariaDB con una nuova funzione simile a qualle native (built-in), come ABS()
e CONCAT()
.
nome_funzione
è il nome che dovrà essere usato nelle istruzioni SQL
per invocarla. La clausola RETURNS
indica il tipo di valore restituito dalla funzione. E' possibile specificare DECIMAL
dopo RETURNS
, ma attualmente le funzioni DECIMAL
restituiscono valori stringa, e dovrebbero essere dichiarate come STRING
.
nome_shared_library
è il nome del file che contiene l'implementazione della funzione. Il file deve essere posizionato nella directory dei plugin. Questa directory è specificata dalla variabile di sistema plugin_dir.
Nota: Questa è una novità di MariaDB/MySQL 5.1. Nelle versioni precedenti di MySQL, lo shared object può trovarsi in qualsiasi directory alla quale il linker dinamico possa accedere.
Per creare una funzione, occorre disporre del privilegio INSERT
per il database mysql. Ciò è necessario perché CREATE FUNCTION
aggiunge una riga nella tabella di sistema mysql.func, contenente il nome della funzione, il suo tipo e il nome della libreria condivisa. Se questa tabella non è presente, occorre eseguire il comando mysql_upgrade per crearla.