程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 理解Mysql CREATE FUNCTION/DROP FUNCTION語法

理解Mysql CREATE FUNCTION/DROP FUNCTION語法

編輯:關於MYSQL數據庫
一個自定義函數 (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腳本來創建此列。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved