程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL入門學習之十三:自定義函數的基本操作

MYSQL入門學習之十三:自定義函數的基本操作

編輯:MySQL綜合教程

MYSQL入門學習之十三:自定義函數的基本操作   相關鏈接: MYSQL入門學習之一:基本操作 http://www.BkJia.com/database/201212/173868.html MYSQL入門學習之二:使用正則表達式搜索 http://www.BkJia.com/database/201212/173869.html MYSQL入門學習之三:全文本搜索 http://www.BkJia.com/database/201212/173873.html MYSQL入門學習之四:MYSQL的數據類型 http://www.BkJia.com/database/201212/175536.html MYSQL入門學習之五:MYSQL的字符集 http://www.BkJia.com/database/201212/175541.html MYSQL入門學習之六:MYSQL的運算符 http://www.BkJia.com/database/201212/175862.html MYSQL入門學習之七:MYSQL常用函數 http://www.BkJia.com/database/201212/175864.html MYSQL入門學習之八:數據庫及表的基本操作 http://www.BkJia.com/database/201212/175867.html MYSQL入門學習之九:索引的簡單操作 http://www.BkJia.com/database/201212/176772.html MYSQL入門學習之十:視圖的基本操作 http://www.BkJia.com/database/201212/176775.html MYSQL入門學習之十一:觸發器的基本操作 http://www.BkJia.com/database/201212/176781.html MYSQL入門學習之十二:存儲過程的基本操作 http://www.BkJia.com/database/201212/177380.html   一、自定義函數(UDF)的特性和功能  www.2cto.com           函數能分返回字符串,整數或實數;         可以定義一次作用於一行的簡單函數,或作用於多行的組的集合函數; 二、基本操作 1、創建自定義函數         CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}         BEGIN             //函數實現的語句         END;         aggregate 指定創建的函數是普通的自定義函數,還是AGGREGATE函數。         function_name 是用在SQL聲明中以備調用的函數名字。         RETURNS 子句說明函數返回值的類型。          每次服務器啟動的時候會重新加載所有有效函數,除非使用--skip-grant-tables參數啟動mysqld。在這種情況下, 將跳過UDF的初始化,UDF不可用。         一個AGGREGATE函數就像一個MySQL固有的集合(總和)函數一樣起作用,比如,SUM或COUNT()函數。要使得AGGREGATE 起作用,mysql.func表必須包括一個type列。如果mysql.func表沒有這一 列,則應該運行mysql_fix_privilege_tables腳本來創建此列。         示例: [sql]  mysql> delimiter //   mysql> create function fun_add_rand(       ->     in_int int       -> )       -> RETURNS int       -> BEGIN       ->     declare i_rand int;       ->     declare i_return int;       ->       ->     set i_rand=floor(rand()*100);       ->     set i_return = in_int + i_rand;       ->       ->     return i_return;       -> END;       -> //   mysql> delimiter ;     2、使用自定義函數         示例: [sql]  mysql> select id from test_inn;    +------+    | id   |    +------+    |    1 |    |    1 |    |    1 |    |    1 |    +------+    mysql> select fun_add_rand(id) from test_inn;    +------------------+    | fun_add_rand(id) |    +------------------+    |               91 |    |               34 |    |               93 |    |               66 |    +------------------+     3、刪除自定義函數         DROP FUNCTION [ IF EXISTS ] function_name;         示例: [sql]  mysql> drop function if exists fun_add_rand;     4、查看自定義函數創建信息         SHOW CREATE FUNTION function_name;         示例: [sql]  mysql> show create function fun_add_rand;                                                                                                                    +--------------+----------+-----------------------------------------------------------+----------------------+----------------------+--------------------+   | Function     | sql_mode | Create Function                                           | character_set_client | collation_connection | Database Collation |   +--------------+----------+-----------------------------------------------------------+----------------------+----------------------+--------------------+   | fun_add_rand |          | CREATE DEFINER=`root`@`localhost` FUNCTION `fun_add_rand`(                                                                           in_int int                                                                       ) RETURNS int(11)                                                                       BEGIN                                                                           declare i_rand int;                                                                           declare i_return int;                                                                                                                                                  set i_rand=floor(rand()*100);                                                                           set i_return = in_int + i_rand;                                                                                                                                                  return i_return;                                                                       END | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |                                                                       +--------------+----------+-----------------------------------------------------------+----------------------+----------------------+--------------------+     5、查看自定義函數狀態         SHOW FUNCTION STATUS [ LIKE '' ];         示例: [sql]  mysql> show function status like 'fun%';   +------+--------------+----------+----------------+---------------------+---------------------+---------------+   | Db   | Name         | Type     | Definer        | Modified            | Created             | Security_type |   +------+--------------+----------+----------------+---------------------+---------------------+---------------+   | test | fun_add_rand | FUNCTION | root@localhost | 2012-12-18 20:08:50 | 2012-12-18 20:08:50 | DEFINER       |   +------+--------------+----------+----------------+---------------------+---------------------+---------------+    

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