mysql函数创建与使用_mysql function函数创建与应用方法
這些語句創(chuàng)建存儲子程序。要在MySQL 5.1中創(chuàng)建子程序,必須具有CREATE ROUTINE權(quán)限,并且ALTER ROUTINE和EXECUTE權(quán)限被自動授予它的創(chuàng)建者。如果二進(jìn)制日志功能被允許,你也可能需要SUPER權(quán)限,請參閱20.4節(jié),“存儲子程序和觸發(fā)程序的二進(jìn)制日志功能”。
默認(rèn)地,子程序與當(dāng)前數(shù)據(jù)庫教程關(guān)聯(lián)。要明確地把子程序與一個給定數(shù)據(jù)庫關(guān)聯(lián)起來,可以在創(chuàng)建子程序的時候指定其名字為db_name.sp_name。
如果子程序名和內(nèi)建的SQL函數(shù)名一樣,定義子程序時,你需要在這個名字和隨后括號中間插入一個空格,否則發(fā)生語法錯誤。當(dāng)你隨后調(diào)用子程序的時候也要插入。為此,即使有可能出現(xiàn)這種情況,我們還是建議最好避免給你自己的存儲子程序取與存在的SQL函數(shù)一樣的名字。
由括號包圍的參數(shù)列必須總是存在。如果沒有參數(shù),也該使用一個空參數(shù)列()。每個參數(shù)默認(rèn)都是一個IN參數(shù)。要指定為其它參數(shù),可在參數(shù)名之前使用關(guān)鍵詞 OUT或INOUT
注意: 指定參數(shù)為IN, OUT, 或INOUT 只對PROCEDURE是合法的。(FUNCTION參數(shù)總是被認(rèn)為是IN參數(shù))
RETURNS字句只能對FUNCTION做指定,對函數(shù)而言這是強(qiáng)制的。它用來指定函數(shù)的返回類型,而且函數(shù)體必須包含一個RETURN value語句
mysql教程> delimiter $$
mysql>
mysql> CREATE FUNCTION myFunction(
->???????? in_title VARCHAR(4),
->???????? in_gender CHAR(1),
->???????? in_firstname???? VARCHAR(20),
->???????? in_middle_initial CHAR(1),
->???????? in_surname?????? VARCHAR(20))
->
->?? RETURNS VARCHAR(60)
-> BEGIN
->?? DECLARE l_title?????????????? VARCHAR(4);
->?? DECLARE l_name_string???????? VARCHAR(60);
->
->?? IF ISNULL(in_title)? THEN
->????? IF in_gender='M' THEN
->???????? SET l_title='Mr';
->????? ELSE
->???????? SET l_title='Ms';
->????? END IF;
->?? END IF;
->
->?? IF ISNULL(in_middle_initial) THEN
->????? SET l_name_string=CONCAT(l_title,' ',in_firstname,' ',in_surname);
->?? ELSE
->????? SET l_name_string=CONCAT(l_title,' ',in_firstname,' ',
->?????????????????????????? in_middle_initial,' ',in_surname);
->?? END IF;
->
->?? RETURN(l_name_string);
-> END$$
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> delimiter ;
mysql>
mysql> select myFunction('Mrs','M','First','Middle','Last');
+-----------------------------------------------+
| myFunction('Mrs','M','First','Middle','Last') |
+-----------------------------------------------+
| NULL????????????????????????????????????????? |
+-----------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql>
mysql>
mysql> select myFunction(null,'M','First','Middle','Last');
+----------------------------------------------+
| myFunction(null,'M','First','Middle','Last') |
+----------------------------------------------+
| Mr First M Last????????????????????????????? |
+----------------------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql>
mysql> drop function myFunction;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql>
注:可能受到系統(tǒng)影響
受影響系統(tǒng):
MySQL AB MySQL 4.1.5
MySQL AB MySQL 4.1.4
MySQL AB MySQL 4.1.3-beta
MySQL AB MySQL 4.1.3-0
MySQL AB MySQL 4.1.2-alpha
MySQL AB MySQL 4.1.0-alpha
MySQL AB MySQL 4.1.0-0
MySQL AB MySQL 4.0.9-gamma
MySQL AB MySQL 4.0.9
MySQL AB MySQL 4.0.8-gamma
MySQL AB MySQL 4.0.8
MySQL AB MySQL 4.0.7-gamma
MySQL AB MySQL 4.0.7
MySQL AB MySQL 4.0.6
MySQL AB MySQL 4.0.5a
MySQL AB MySQL 4.0.5
MySQL AB MySQL 4.0.4
MySQL AB MySQL 4.0.3
MySQL AB MySQL 4.0.21
MySQL AB MySQL 4.0.20
MySQL AB MySQL 4.0.2
MySQL AB MySQL 4.0.18
MySQL AB MySQL 4.0.15
MySQL AB MySQL 4.0.14
MySQL AB MySQL 4.0.13
MySQL AB MySQL 4.0.12
MySQL AB MySQL 4.0.11-gamma
MySQL AB MySQL 4.0.11
MySQL AB MySQL 4.0.10
MySQL AB MySQL 4.0.1
MySQL AB MySQL 4.0.0
不受影響系統(tǒng):
MySQL AB MySQL 4.1.10a
MySQL AB MySQL 4.0.24
總結(jié)
以上是生活随笔為你收集整理的mysql函数创建与使用_mysql function函数创建与应用方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 植物大战僵尸电脑版在线玩
- 下一篇: cf如何把蹲键改为快捷键(cf蹲键改哪个