MySQL學習筆記-自訂函數

來源:互聯網
上載者:User

標籤:mysql   資料庫   

MySQL學習筆記-自訂函數


1.自訂函數簡介

 

自訂函數:使用者自訂函數(user-defined function,UDF)是一種對MySQL擴充的途徑,其用法與內建函數相同

自訂函數的兩個必要條件:(1)參數  (2)傳回值

 

自訂函數:

建立自訂函數

CREATE FUNCTION function_nameRETURNS{STRING|INTEGER|REAL|DECIMAL}routine_body

 

關於函數體:

1.函數體可以由合法的SQL語句構成;

2.函數體可以是簡單的SELECT或INSERT語句;

3.函數體如果為複合結構則使用BEGIN...END語句;

4.複合結構可以包含聲明、迴圈、控制結構。

 

2.建立不帶參數的自訂函數

建立日期時間為年月日點分秒格式

mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)                     -> RETURN DATE_FORMAT(NOW(),‘%Y年%m月%d日 %H點:%i分:%s秒‘); Query OK, 0 rows affected (0.00 sec) mysql> SELECT f1();+-------------------------------------+| f1()                                |+-------------------------------------+| 2016年11月28日 08點:34分:55秒       |+-------------------------------------+

 

3.建立帶有參數的自訂函數

建立可以計算2個數的平均值的函數

mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)    -> RETURNS FLOAT(10,2) UNSIGNED    -> RETURN (num1+num2)/2;Query OK, 0 rows affected (0.00 sec) mysql> SELECT f2(10,16);+-----------+| f2(10,16) |+-----------+|     13.00 |+-----------+

 

4.建立具有符合結構函數體的自訂函數

可以通過“DELIMITER 分隔字元”修改MySQL中的預設結束符

刪除函數:

DROP FUNCTION [IF EXISTS] function_name

 

 

如果自訂函數存在符合結構,多個語句,函數體要包含在BEGIN...END內,同時,需要通過DELIMITER將預設的結束符 ; 修改成其他符號,如://   $$   ,以免函數由於語句結尾的 ; 號導致中斷

 

mysql> DELIMITER //mysql> CREATE FUNCTION adduser(username VARCHAR(20))    -> RETURNS INT UNSIGNED    -> BEGIN    -> INSERT test(username) VALUES(username);    -> RETURN LAST_INSERT_ID();    -> END    -> //  mysql> DELIMITER ;mysql> SELECT adduser(‘Tom‘);+----------------+| adduser(‘Tom‘) |+----------------+|              3 |+----------------+ mysql> SELECT adduser(‘Rool‘);+-----------------+| adduser(‘Rool‘) |+-----------------+|               4 |+-----------------+ mysql> SELECT * FROM user;+----+----------+| id | username |+----+----------+|  1 | Drive    ||  2 | Cve      ||  3 | Tom      ||  4 | Rool     |+----+----------+

 


本文出自 “謝育政” 部落格,請務必保留此出處http://kurolz.blog.51cto.com/11433546/1929135

MySQL學習筆記-自訂函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.