理解Mysql CREATE FUNCTION/DROP FUNCTION文法

來源:互聯網
上載者:User

一個自訂函數 (UDF)就是用一個象ABS() 或 CONCAT()這樣的固有(內建)函數一樣作用的新函數去 擴充MySQL。

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指令碼來建立此列。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.