有兩個途徑來為MySQL添加新函數:
你可以通過自行醫函數接口 (UDF)來添加函數。自定義函數被編譯為目標文件,然後用CREATE FUNCTION 和DROP FUNCTION 聲明動態地添入到服務器中及從服務器中移出。
你可以將函數添加為MySQL固有(內建)函數。固有函數被編譯進mysqld服務器中,成為永久可用的。
每種途徑都有其優點和缺點:
如果你編寫自定義函數,你除了安裝服務器本身之外還要安裝目標文件。如果將你的函數編譯進服務器中,你就不需要這麼做了。
你可以給二進制版本的MySQL分發版添加UDF。固有函數需要你去修正源碼分發版。.
如果你升級你的MySQL分發版,你可以繼續使用先前安裝了的UDF, 除非你升級到一個UDF接口改變了的新版本。對固有函數而言,每次升級你都必須重復一次修正。
無論你使用哪種方法去添加新函數,它們都可以被SQL聲明調用,就像 ABS() 或 SOUNDEX()這樣的固有函數一樣。
另一個添加函數的方法時創建存儲函數。這些函數時用SQL聲明編寫的,而不是編譯目標代碼。編寫存儲函數的語法在第20章:存儲程序和函數 中描述。
下面的小節描述UDF接口的特性,給出編寫UDF的指令,並討論MySQL為防止UDF被誤用而采取的安全預防措施。
給出源代碼的例子來說明如何編寫UDF,可以看一看MySQL源碼分發版中提供的sql/udf_example.cc 文件。