CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}
SONAME shared_library_name
DROP FUNCTION function_name
function_name 是 用在SQL聲明中以備調用的函數名字。RETURNS 子句說明函數返回值的類型。 shared_library_name 是共享目標文件的基本名,共享目標文件含有實現函數的代碼。該文件必須位於一個能被你系統的動態連接者搜索的目錄裡。
你必須有mysql 數據庫的INSERT 權限才能創建一個函數,你必須有MySQL 數據庫的DELETE權限才能撤銷一個函數。這是因為CREATE FUNCTION 往記錄函數名字,類型和共享名的mysql.func系統表裡添加了一行,而DROP FUNCTION則是從表中刪掉這一行。如果你沒有這個系統表,你應該運行MySQL_fix_privilege_tables腳本來創建一個。
一個有效的函數是一個用CREATE FUNCTION加載且沒有用DROP FUNCTION移除的函數。每次服務器啟動的時候會重新加載所有有效函數,除非你使用--skip-grant-tables參數啟動MySQLd。在這種情況下, 將跳過UDF的初始化,UDF不可用。
要使得UDF機制能夠起作用,必須使用C或者C++編寫函數,你的系統必須支持動態加載,而且你必須是動態編譯的MySQLd(非靜態)。
一個AGGREGATE函數就像一個MySQL固有的集合(總和)函數一樣起作用,比如,SUM或COUNT()函數。要使得AGGREGATE 起作用,你的mysql.func表必須包括一個type列。如果你的mysql.func表沒有這一 列,你應該運行MySQL_fix_privilege_tables腳本來創建此列。