mysql中已經有很多函式,如時間函式等,但是有時這些函式不能滿足自己的設計需求,此時需要自定義函式,使用者自定義函式(user-defined functuin,udf)是對mysql的擴充套件,其用法和內建函式相同
函式需要具備:引數 返回值
對於函式體中的部分可以是:
1、函式體由合法的sql語句組成
2、函式體可以是簡單的select或者insert語句
3、函式體若為復合結構則使用begin...end語句
4、復合結構可以包含宣告、迴圈、控制結構
知道通過now()函式可以顯示日期和時間,如果想把這個時間表達成:「年月日時分秒」 的形式怎麼辦呢?通過使用格式化函式date_format()
mysql> select date_format(now(),'%y年%m月%d日 %h點:%i分:%s秒');
由於該過程書寫較為麻煩,如果經常使用很不方便,因此將其「製作」成函式
mysql> create function f1() returns varchar(30)
-> return date_format(now(),'%y年:%m月:%d日 %h點:%i分:%s秒');
由於在定義f1()的時候沒有引數,因此呼叫時就可以直接呼叫
mysql> select f1();
帶有乙個以上的引數時,這裡求解兩個數的平均數
mysql> create function f2(num1 smallint unsigned,num2 smallint unsigned) #函式名
-> returns float(10,2) unsigned #返回值的型別
-> return (num1+num2)/2; #返回值
首先建立乙個資料表test
現在想往資料表中插入記錄,返回值是新插入的記錄的id號
root@localhost test>insert into test values(default,'lj.k');
由於分號是命令的結束,因此這裡需要修改預設的分隔符,否則在輸入分號之後無法返回新插入記錄的id,因此使用命令
delimiter 分隔符
這樣所有的命令均需要以分隔符來結束
比這將分隔符修改為//,則所有命令均需要以 // 為結束
root@localhost test>create function adduser(username varchar(20)) #建立新增引數名為username的函式adduser
-> returns int unsigned
-> begin
-> insert test(username) values(username);
-> return last_insert_id();
-> end
-> //
這裡因為有兩條語句 insert test(username) values(username)和return last_insert_id()兩條語句要執行,因此需要使用begin...end語句,從而構成聚合體
通過drop function命令進行刪除
MySQL之自定義函式
自定義函式 使用者定義函式 udf 是一種對mysql擴充套件的途徑,其用法與內建函式相同 自定義函式需要兩個必要條件 引數和返回值 函式可以返回任意型別的值,同樣可以接收這些型別的引數,最多1024個引數 1.建立自定義函式 create function function name return...
mysql自定義函式優點 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...
mysql自定義函式命名 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...