七、自定義函數

7-1回顧和概述

 

7-2自定義函數簡介

1.自定義函數

用戶自定義函數(user-defined function, UDF)是一種對MySQL擴展的途徑, 其用法與內置函數相同。

自定義函數的兩個必要條件:

  • a.參數
  • b.返回值

函數可以返回任意類型的值,同樣可以接受這些類型的參數;

函數的參數與返回值之間,沒有必然的聯繫。

2.創建自定義函數

CREATE FUNCTION function_name

RETURNS

{STRING|INTEGER|REAL|DECIMAL}

routine_body - 函數體

3.關於函數體

  • (1)函數體由合法的SQL語法構成;
  • (2)函數體可以是簡單的SELECT或INSERT語句;
  • (3)函數體如果爲複合結構則使用BEGIN...END語句;
  • (4)複合結構可以包括聲明,循環,控制結構。

 

7-3創建不帶參數的自定義函數

創建日期時間自定義函數:

create function f1()

returns varchar(30)

return date_format(now(),'%Y年%m月%d日 %H點:%i分:%s秒');

select f1();

DATE_FORMAT()函數在格式化日期格式時,應該是百分號在代表年、月、日的字母前面,字母的大小寫不同,所表示格式也有所區別:  

select date_format(now(),'%Y-%m-%d'),其結果是: 2015-07-04

因此,各字母所表示的含義爲: Y:2015 y:15 M:july m:07 D:4th d:04

 

7-4 創建帶有參數的自定義函數

CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)

RETURNS FLOAT(10,2) UNSIGNED

RETURN(num1+num2)

刪除函數: DROP FUNCTION fun_name;

 

7-5創建具有複合結構函數體的自定義函數

//創建具有複合結構函數體的自定義函數

修改分隔符:DELEMITER 分隔符

Eg:DELIMITER // /* 將分隔符修改爲 '//' */

  • 當函數體內需要執行的是多條語句時,要使用BEGIN...END語句
  • 且當編寫函數體內容的時候,需要使用 DELIMITER 關鍵字將分隔符先修改爲別的,否則編寫語句的時候寫到 ';' 的時候會直接執行,導致函數編寫失敗

刪除函數:

DROP FUNCTION [IF EXISTS] function_name

Eg:

DELIMITER //

CREATE FUNCTION ADD_USER(p_id SMALLINT,username VARCHAR(20))

RETURNS INT UNSIGNED

BEGIN

INSERT user(p_id,username) VALUES(p_id,username);

RETURN LAST_INSERT_ID();

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章